diff options
| author | Owen Jacobson <owen@grimoire.ca> | 2024-10-02 01:31:43 -0400 |
|---|---|---|
| committer | Owen Jacobson <owen@grimoire.ca> | 2024-10-02 01:31:43 -0400 |
| commit | 469613872f6fb19f4579b387e19b2bc38fa52f51 (patch) | |
| tree | 16edc3e8fac1a418c4b9ed5450167a793a7d6c8b /src/event/repo | |
| parent | 6f07e6869bbf62903ac83c9bc061e7bde997e6a8 (diff) | |
Package up common event fields as Instant
Diffstat (limited to 'src/event/repo')
| -rw-r--r-- | src/event/repo/message.rs | 42 | ||||
| -rw-r--r-- | src/event/repo/sequence.rs | 12 |
2 files changed, 34 insertions, 20 deletions
diff --git a/src/event/repo/message.rs b/src/event/repo/message.rs index f051fec..f29c8a4 100644 --- a/src/event/repo/message.rs +++ b/src/event/repo/message.rs @@ -3,7 +3,7 @@ use sqlx::{sqlite::Sqlite, SqliteConnection, Transaction}; use crate::{ channel::{self, Channel}, clock::DateTime, - event::{types, Sequence}, + event::{types, Instant, Sequence}, login::{self, Login}, message::{self, Message}, }; @@ -25,8 +25,7 @@ impl<'c> Events<'c> { &mut self, sender: &Login, channel: &Channel, - sent_at: &DateTime, - sent_sequence: Sequence, + sent: &Instant, body: &str, ) -> Result<types::ChannelEvent, sqlx::Error> { let id = message::Id::generate(); @@ -46,13 +45,15 @@ impl<'c> Events<'c> { id, channel.id, sender.id, - sent_at, - sent_sequence, + sent.at, + sent.sequence, body, ) .map(|row| types::ChannelEvent { - sequence: row.sent_sequence, - at: row.sent_at, + instant: Instant { + at: row.sent_at, + sequence: row.sent_sequence, + }, data: types::MessageEvent { channel: channel.clone(), sender: sender.clone(), @@ -73,8 +74,7 @@ impl<'c> Events<'c> { &mut self, channel: &Channel, message: &message::Id, - deleted_at: &DateTime, - deleted_sequence: Sequence, + deleted: &Instant, ) -> Result<types::ChannelEvent, sqlx::Error> { sqlx::query_scalar!( r#" @@ -88,8 +88,10 @@ impl<'c> Events<'c> { .await?; Ok(types::ChannelEvent { - sequence: deleted_sequence, - at: *deleted_at, + instant: Instant { + at: deleted.at, + sequence: deleted.sequence, + }, data: types::MessageDeletedEvent { channel: channel.clone(), message: message.clone(), @@ -122,8 +124,10 @@ impl<'c> Events<'c> { Channel { id: row.channel_id, name: row.channel_name, - created_at: row.channel_created_at, - created_sequence: row.channel_created_sequence, + created: Instant { + at: row.channel_created_at, + sequence: row.channel_created_sequence, + }, }, row.message, ) @@ -160,14 +164,18 @@ impl<'c> Events<'c> { resume_at, ) .map(|row| types::ChannelEvent { - sequence: row.sent_sequence, - at: row.sent_at, + instant: Instant { + at: row.sent_at, + sequence: row.sent_sequence, + }, data: types::MessageEvent { channel: Channel { id: row.channel_id, name: row.channel_name, - created_at: row.channel_created_at, - created_sequence: row.channel_created_sequence, + created: Instant { + at: row.channel_created_at, + sequence: row.channel_created_sequence, + }, }, sender: Login { id: row.sender_id, diff --git a/src/event/repo/sequence.rs b/src/event/repo/sequence.rs index c985869..40d6a53 100644 --- a/src/event/repo/sequence.rs +++ b/src/event/repo/sequence.rs @@ -1,6 +1,9 @@ use sqlx::{sqlite::Sqlite, SqliteConnection, Transaction}; -use crate::event::Sequence; +use crate::{ + clock::DateTime, + event::{Instant, Sequence}, +}; pub trait Provider { fn sequence(&mut self) -> Sequences; @@ -15,7 +18,7 @@ impl<'c> Provider for Transaction<'c, Sqlite> { pub struct Sequences<'t>(&'t mut SqliteConnection); impl<'c> Sequences<'c> { - pub async fn next(&mut self) -> Result<Sequence, sqlx::Error> { + pub async fn next(&mut self, at: &DateTime) -> Result<Instant, sqlx::Error> { let next = sqlx::query_scalar!( r#" update event_sequence @@ -26,7 +29,10 @@ impl<'c> Sequences<'c> { .fetch_one(&mut *self.0) .await?; - Ok(next) + Ok(Instant { + at: *at, + sequence: next, + }) } pub async fn current(&mut self) -> Result<Sequence, sqlx::Error> { |
