summaryrefslogtreecommitdiff
path: root/src/user/history.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/user/history.rs')
-rw-r--r--src/user/history.rs27
1 files changed, 9 insertions, 18 deletions
diff --git a/src/user/history.rs b/src/user/history.rs
index 4f99130..f58e9c7 100644
--- a/src/user/history.rs
+++ b/src/user/history.rs
@@ -1,8 +1,8 @@
use super::{
- Id, User,
+ User,
event::{Created, Event},
};
-use crate::event::Instant;
+use crate::event::{Instant, Sequence};
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct History {
@@ -12,22 +12,13 @@ pub struct History {
// State interface
impl History {
- pub fn id(&self) -> &Id {
- &self.user.id
- }
-
- // Snapshot of this user as it was when created. (Note to the future: it's okay
- // if this returns a redacted or modified version of the user. If we implement
- // renames by redacting the original name, then this should return the edited
- // user, not the original, even if that's not how it was "as created.")
- #[cfg(test)]
- pub fn as_created(&self) -> User {
- self.user.clone()
- }
-
- // Snapshot of this user, as of all events recorded in this history.
- pub fn as_snapshot(&self) -> Option<User> {
- self.events().collect()
+ pub fn as_of<S>(&self, sequence: S) -> Option<User>
+ where
+ S: Into<Sequence>,
+ {
+ self.events()
+ .filter(Sequence::up_to(sequence.into()))
+ .collect()
}
}