summaryrefslogtreecommitdiff
path: root/src/boot
diff options
context:
space:
mode:
Diffstat (limited to 'src/boot')
-rw-r--r--src/boot/app.rs12
-rw-r--r--src/boot/mod.rs5
2 files changed, 13 insertions, 4 deletions
diff --git a/src/boot/app.rs b/src/boot/app.rs
index fc84b3a..03e7230 100644
--- a/src/boot/app.rs
+++ b/src/boot/app.rs
@@ -2,7 +2,8 @@ use sqlx::sqlite::SqlitePool;
use super::{Channel, Snapshot};
use crate::{
- channel::repo::Provider as _, event::repo::Provider as _, message::repo::Provider as _,
+ channel::repo::Provider as _, event::repo::Provider as _, login::repo::Provider as _,
+ message::repo::Provider as _,
};
pub struct Boot<'a> {
@@ -17,8 +18,14 @@ impl<'a> Boot<'a> {
pub async fn snapshot(&self) -> Result<Snapshot, sqlx::Error> {
let mut tx = self.db.begin().await?;
let resume_point = tx.sequence().current().await?;
- let channels = tx.channels().all(resume_point.into()).await?;
+ let logins = tx.logins().all(resume_point.into()).await?;
+ let logins = logins
+ .into_iter()
+ .filter_map(|login| login.as_of(resume_point))
+ .collect();
+
+ let channels = tx.channels().all(resume_point.into()).await?;
let channels = {
let mut snapshots = Vec::with_capacity(channels.len());
@@ -48,6 +55,7 @@ impl<'a> Boot<'a> {
Ok(Snapshot {
resume_point,
+ logins,
channels,
})
}
diff --git a/src/boot/mod.rs b/src/boot/mod.rs
index a68acac..1f94106 100644
--- a/src/boot/mod.rs
+++ b/src/boot/mod.rs
@@ -4,7 +4,7 @@ mod routes;
use crate::{
channel,
event::{Instant, Sequence},
- login::Login,
+ login::{self, Login},
message,
};
@@ -13,6 +13,7 @@ pub use self::routes::router;
#[derive(serde::Serialize)]
pub struct Snapshot {
pub resume_point: Sequence,
+ pub logins: Vec<Login>,
pub channels: Vec<Channel>,
}
@@ -43,7 +44,7 @@ impl Channel {
pub struct Message {
#[serde(flatten)]
pub sent: Instant,
- pub sender: Login,
+ pub sender: login::Id,
pub id: message::Id,
pub body: String,
}