diff options
Diffstat (limited to 'src/events/routes.rs')
| -rw-r--r-- | src/events/routes.rs | 26 |
1 files changed, 10 insertions, 16 deletions
diff --git a/src/events/routes.rs b/src/events/routes.rs index f09474c..e3a959f 100644 --- a/src/events/routes.rs +++ b/src/events/routes.rs @@ -9,14 +9,12 @@ use axum::{ }; use futures::stream::{Stream, StreamExt as _}; -use super::{ - extract::LastEventId, - types::{self, ResumePoint}, -}; +use super::{extract::LastEventId, types}; use crate::{ app::App, error::{Internal, Unauthorized}, login::{app::ValidateError, extract::Identity}, + repo::sequence::Sequence, }; #[cfg(test)] @@ -29,11 +27,9 @@ pub fn router() -> Router<App> { async fn events( State(app): State<App>, identity: Identity, - last_event_id: Option<LastEventId<ResumePoint>>, -) -> Result<Events<impl Stream<Item = types::ResumableEvent> + std::fmt::Debug>, EventsError> { - let resume_at = last_event_id - .map(LastEventId::into_inner) - .unwrap_or_default(); + last_event_id: Option<LastEventId<Sequence>>, +) -> Result<Events<impl Stream<Item = types::ChannelEvent> + std::fmt::Debug>, EventsError> { + let resume_at = last_event_id.map(LastEventId::into_inner); let stream = app.events().subscribe(resume_at).await?; let stream = app.logins().limit_stream(identity.token, stream).await?; @@ -46,7 +42,7 @@ struct Events<S>(S); impl<S> IntoResponse for Events<S> where - S: Stream<Item = types::ResumableEvent> + Send + 'static, + S: Stream<Item = types::ChannelEvent> + Send + 'static, { fn into_response(self) -> Response { let Self(stream) = self; @@ -57,14 +53,12 @@ where } } -impl TryFrom<types::ResumableEvent> for sse::Event { +impl TryFrom<types::ChannelEvent> for sse::Event { type Error = serde_json::Error; - fn try_from(value: types::ResumableEvent) -> Result<Self, Self::Error> { - let types::ResumableEvent(resume_at, data) = value; - - let id = serde_json::to_string(&resume_at)?; - let data = serde_json::to_string_pretty(&data)?; + fn try_from(event: types::ChannelEvent) -> Result<Self, Self::Error> { + let id = serde_json::to_string(&event.sequence)?; + let data = serde_json::to_string_pretty(&event)?; let event = Self::default().id(id).data(data); |
