summaryrefslogtreecommitdiff
path: root/src/channel
diff options
context:
space:
mode:
Diffstat (limited to 'src/channel')
-rw-r--r--src/channel/id.rs38
-rw-r--r--src/channel/mod.rs3
-rw-r--r--src/channel/routes.rs7
-rw-r--r--src/channel/routes/test/on_send.rs2
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 _},
};