diff options
Diffstat (limited to 'src/channel')
| -rw-r--r-- | src/channel/id.rs | 38 | ||||
| -rw-r--r-- | src/channel/mod.rs | 3 | ||||
| -rw-r--r-- | src/channel/routes.rs | 7 | ||||
| -rw-r--r-- | src/channel/routes/test/on_send.rs | 2 |
4 files changed, 44 insertions, 6 deletions
diff --git a/src/channel/id.rs b/src/channel/id.rs new file mode 100644 index 0000000..22a2700 --- /dev/null +++ b/src/channel/id.rs @@ -0,0 +1,38 @@ +use std::fmt; + +use crate::id::Id as BaseId; + +// Stable identifier for a [Channel]. Prefixed with `C`. +#[derive( + Clone, + Debug, + Eq, + Hash, + Ord, + PartialEq, + PartialOrd, + sqlx::Type, + serde::Deserialize, + serde::Serialize, +)] +#[sqlx(transparent)] +#[serde(transparent)] +pub struct Id(BaseId); + +impl From<BaseId> for Id { + fn from(id: BaseId) -> Self { + Self(id) + } +} + +impl Id { + pub fn generate() -> Self { + BaseId::generate("C") + } +} + +impl fmt::Display for Id { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + self.0.fmt(f) + } +} diff --git a/src/channel/mod.rs b/src/channel/mod.rs index 9f79dbb..3115e98 100644 --- a/src/channel/mod.rs +++ b/src/channel/mod.rs @@ -1,4 +1,7 @@ pub mod app; +mod id; mod routes; pub use self::routes::router; + +pub use self::id::Id; diff --git a/src/channel/routes.rs b/src/channel/routes.rs index 067d213..72d6195 100644 --- a/src/channel/routes.rs +++ b/src/channel/routes.rs @@ -10,14 +10,11 @@ use axum_extra::extract::Query; use super::app; use crate::{ app::App, + channel, clock::RequestedAt, error::Internal, events::app::EventsError, - repo::{ - channel::{self, Channel}, - login::Login, - sequence::Sequence, - }, + repo::{channel::Channel, login::Login, sequence::Sequence}, }; #[cfg(test)] diff --git a/src/channel/routes/test/on_send.rs b/src/channel/routes/test/on_send.rs index d37ed21..987784d 100644 --- a/src/channel/routes/test/on_send.rs +++ b/src/channel/routes/test/on_send.rs @@ -2,9 +2,9 @@ use axum::extract::{Json, Path, State}; use futures::stream::StreamExt; use crate::{ + channel, channel::routes, events::{app, types}, - repo::channel, test::fixtures::{self, future::Immediately as _}, }; |
