summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorOwen Jacobson <owen@grimoire.ca>2024-10-01 23:57:22 -0400
committerOwen Jacobson <owen@grimoire.ca>2024-10-01 23:57:22 -0400
commitf878f0b5eaa44e8ee8d67cbfd706926ff2119113 (patch)
treefd9534ebc884da59b4031e2bcf2eb2d9dac35a87 /src
parentd171a258ad2119e39cb715f8800031fff16967dc (diff)
Organize IDs into top-level namespaces.
(This is part of a larger reorganization.)
Diffstat (limited to 'src')
-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
-rw-r--r--src/events/app.rs3
-rw-r--r--src/events/repo/message.rs11
-rw-r--r--src/events/types.rs11
-rw-r--r--src/lib.rs1
-rw-r--r--src/login/app.rs6
-rw-r--r--src/login/extract.rs4
-rw-r--r--src/login/id.rs24
-rw-r--r--src/login/mod.rs7
-rw-r--r--src/login/repo/auth.rs5
-rw-r--r--src/login/token/id.rs27
-rw-r--r--src/login/token/mod.rs3
-rw-r--r--src/login/types.rs2
-rw-r--r--src/message/id.rs27
-rw-r--r--src/message/mod.rs3
-rw-r--r--src/repo/channel.rs39
-rw-r--r--src/repo/login/mod.rs2
-rw-r--r--src/repo/login/store.rs25
-rw-r--r--src/repo/message.rs28
-rw-r--r--src/repo/token.rs33
23 files changed, 161 insertions, 150 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 _},
};
diff --git a/src/events/app.rs b/src/events/app.rs
index c15f11e..1fa2f70 100644
--- a/src/events/app.rs
+++ b/src/events/app.rs
@@ -12,9 +12,10 @@ use super::{
types::{self, ChannelEvent},
};
use crate::{
+ channel,
clock::DateTime,
repo::{
- channel::{self, Provider as _},
+ channel::Provider as _,
error::NotFound as _,
login::Login,
sequence::{Provider as _, Sequence},
diff --git a/src/events/repo/message.rs b/src/events/repo/message.rs
index 3237553..00c24b1 100644
--- a/src/events/repo/message.rs
+++ b/src/events/repo/message.rs
@@ -1,14 +1,11 @@
use sqlx::{sqlite::Sqlite, SqliteConnection, Transaction};
use crate::{
+ channel,
clock::DateTime,
events::types,
- repo::{
- channel::{self, Channel},
- login::{self, Login},
- message::{self, Message},
- sequence::Sequence,
- },
+ login, message,
+ repo::{channel::Channel, login::Login, message::Message, sequence::Sequence},
};
pub trait Provider {
@@ -172,7 +169,7 @@ impl<'c> Events<'c> {
created_at: row.channel_created_at,
created_sequence: row.channel_created_sequence,
},
- sender: login::Login {
+ sender: Login {
id: row.sender_id,
name: row.sender_name,
},
diff --git a/src/events/types.rs b/src/events/types.rs
index aca3af4..762b6e5 100644
--- a/src/events/types.rs
+++ b/src/events/types.rs
@@ -1,11 +1,8 @@
use crate::{
+ channel,
clock::DateTime,
- repo::{
- channel::{self, Channel},
- login::Login,
- message,
- sequence::Sequence,
- },
+ message,
+ repo::{channel::Channel, login::Login, message::Message, sequence::Sequence},
};
#[derive(Clone, Debug, Eq, PartialEq, serde::Serialize)]
@@ -66,7 +63,7 @@ impl From<CreatedEvent> for ChannelEventData {
pub struct MessageEvent {
pub channel: Channel,
pub sender: Login,
- pub message: message::Message,
+ pub message: Message,
}
impl From<MessageEvent> for ChannelEventData {
diff --git a/src/lib.rs b/src/lib.rs
index 271118b..2300071 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -12,6 +12,7 @@ mod events;
mod expire;
mod id;
mod login;
+mod message;
mod password;
mod repo;
#[cfg(test)]
diff --git a/src/login/app.rs b/src/login/app.rs
index f1dffb9..8ea0a91 100644
--- a/src/login/app.rs
+++ b/src/login/app.rs
@@ -6,7 +6,9 @@ use futures::{
};
use sqlx::sqlite::SqlitePool;
-use super::{broadcaster::Broadcaster, extract::IdentitySecret, repo::auth::Provider as _, types};
+use super::{
+ broadcaster::Broadcaster, extract::IdentitySecret, repo::auth::Provider as _, token, types,
+};
use crate::{
clock::DateTime,
password::Password,
@@ -14,7 +16,7 @@ use crate::{
error::NotFound as _,
login::{Login, Provider as _},
sequence::{Provider as _, Sequence},
- token::{self, Provider as _},
+ token::Provider as _,
},
};
diff --git a/src/login/extract.rs b/src/login/extract.rs
index bfdbe8d..39dd9e4 100644
--- a/src/login/extract.rs
+++ b/src/login/extract.rs
@@ -11,8 +11,8 @@ use crate::{
app::App,
clock::RequestedAt,
error::{Internal, Unauthorized},
- login::app::ValidateError,
- repo::{login::Login, token},
+ login::{app::ValidateError, token},
+ repo::login::Login,
};
// The usage pattern here - receive the extractor as an argument, return it in
diff --git a/src/login/id.rs b/src/login/id.rs
new file mode 100644
index 0000000..c46d697
--- /dev/null
+++ b/src/login/id.rs
@@ -0,0 +1,24 @@
+use crate::id::Id as BaseId;
+
+// Stable identifier for a [Login]. Prefixed with `L`.
+#[derive(Clone, Debug, Eq, PartialEq, sqlx::Type, serde::Serialize)]
+#[sqlx(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("L")
+ }
+}
+
+impl std::fmt::Display for Id {
+ fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+ self.0.fmt(f)
+ }
+}
diff --git a/src/login/mod.rs b/src/login/mod.rs
index 6ae82ac..0430f4b 100644
--- a/src/login/mod.rs
+++ b/src/login/mod.rs
@@ -1,8 +1,11 @@
-pub use self::routes::router;
-
pub mod app;
pub mod broadcaster;
pub mod extract;
+mod id;
mod repo;
mod routes;
+pub mod token;
pub mod types;
+
+pub use self::id::Id;
+pub use self::routes::router;
diff --git a/src/login/repo/auth.rs b/src/login/repo/auth.rs
index 3033c8f..9816c5c 100644
--- a/src/login/repo/auth.rs
+++ b/src/login/repo/auth.rs
@@ -1,9 +1,6 @@
use sqlx::{sqlite::Sqlite, SqliteConnection, Transaction};
-use crate::{
- password::StoredHash,
- repo::login::{self, Login},
-};
+use crate::{login, password::StoredHash, repo::login::Login};
pub trait Provider {
fn auth(&mut self) -> Auth;
diff --git a/src/login/token/id.rs b/src/login/token/id.rs
new file mode 100644
index 0000000..9ef063c
--- /dev/null
+++ b/src/login/token/id.rs
@@ -0,0 +1,27 @@
+use std::fmt;
+
+use crate::id::Id as BaseId;
+
+// Stable identifier for a token. Prefixed with `T`.
+#[derive(Clone, Debug, Eq, Hash, PartialEq, 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("T")
+ }
+}
+
+impl fmt::Display for Id {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ self.0.fmt(f)
+ }
+}
diff --git a/src/login/token/mod.rs b/src/login/token/mod.rs
new file mode 100644
index 0000000..d563a88
--- /dev/null
+++ b/src/login/token/mod.rs
@@ -0,0 +1,3 @@
+mod id;
+
+pub use self::id::Id;
diff --git a/src/login/types.rs b/src/login/types.rs
index 7c7cbf9..a210977 100644
--- a/src/login/types.rs
+++ b/src/login/types.rs
@@ -1,4 +1,4 @@
-use crate::repo::token;
+use crate::login::token;
#[derive(Clone, Debug)]
pub struct TokenRevoked {
diff --git a/src/message/id.rs b/src/message/id.rs
new file mode 100644
index 0000000..385b103
--- /dev/null
+++ b/src/message/id.rs
@@ -0,0 +1,27 @@
+use std::fmt;
+
+use crate::id::Id as BaseId;
+
+// Stable identifier for a [Message]. Prefixed with `M`.
+#[derive(Clone, Debug, Eq, Hash, PartialEq, 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("M")
+ }
+}
+
+impl fmt::Display for Id {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ self.0.fmt(f)
+ }
+}
diff --git a/src/message/mod.rs b/src/message/mod.rs
new file mode 100644
index 0000000..d563a88
--- /dev/null
+++ b/src/message/mod.rs
@@ -0,0 +1,3 @@
+mod id;
+
+pub use self::id::Id;
diff --git a/src/repo/channel.rs b/src/repo/channel.rs
index ad42710..9f1d930 100644
--- a/src/repo/channel.rs
+++ b/src/repo/channel.rs
@@ -1,12 +1,10 @@
-use std::fmt;
-
use sqlx::{sqlite::Sqlite, SqliteConnection, Transaction};
use super::sequence::Sequence;
use crate::{
+ channel::Id,
clock::DateTime,
events::types::{self},
- id::Id as BaseId,
};
pub trait Provider {
@@ -176,38 +174,3 @@ impl<'c> Channels<'c> {
Ok(channels)
}
}
-
-// 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/repo/login/mod.rs b/src/repo/login/mod.rs
index a1b4c6f..4ff7a96 100644
--- a/src/repo/login/mod.rs
+++ b/src/repo/login/mod.rs
@@ -1,4 +1,4 @@
mod extract;
mod store;
-pub use self::store::{Id, Login, Provider};
+pub use self::store::{Login, Provider};
diff --git a/src/repo/login/store.rs b/src/repo/login/store.rs
index b485941..47d1a7c 100644
--- a/src/repo/login/store.rs
+++ b/src/repo/login/store.rs
@@ -1,6 +1,6 @@
use sqlx::{sqlite::Sqlite, SqliteConnection, Transaction};
-use crate::{id::Id as BaseId, password::StoredHash};
+use crate::{login::Id, password::StoredHash};
pub trait Provider {
fn logins(&mut self) -> Logins;
@@ -61,26 +61,3 @@ impl<'t> From<&'t mut SqliteConnection> for Logins<'t> {
Self(tx)
}
}
-
-// Stable identifier for a [Login]. Prefixed with `L`.
-#[derive(Clone, Debug, Eq, PartialEq, sqlx::Type, serde::Serialize)]
-#[sqlx(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("L")
- }
-}
-
-impl std::fmt::Display for Id {
- fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
- self.0.fmt(f)
- }
-}
diff --git a/src/repo/message.rs b/src/repo/message.rs
index a1f73d5..acde3ea 100644
--- a/src/repo/message.rs
+++ b/src/repo/message.rs
@@ -1,30 +1,4 @@
-use std::fmt;
-
-use crate::id::Id as BaseId;
-
-// Stable identifier for a [Message]. Prefixed with `M`.
-#[derive(Clone, Debug, Eq, Hash, PartialEq, 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("M")
- }
-}
-
-impl fmt::Display for Id {
- fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
- self.0.fmt(f)
- }
-}
+use crate::message::Id;
#[derive(Clone, Debug, Eq, PartialEq, serde::Serialize)]
pub struct Message {
diff --git a/src/repo/token.rs b/src/repo/token.rs
index 1663f5e..79e5c54 100644
--- a/src/repo/token.rs
+++ b/src/repo/token.rs
@@ -1,10 +1,11 @@
-use std::fmt;
-
use sqlx::{sqlite::Sqlite, SqliteConnection, Transaction};
use uuid::Uuid;
-use super::login::{self, Login};
-use crate::{clock::DateTime, id::Id as BaseId, login::extract::IdentitySecret};
+use super::login::Login;
+use crate::{
+ clock::DateTime,
+ login::{self, extract::IdentitySecret, token::Id},
+};
pub trait Provider {
fn tokens(&mut self) -> Tokens;
@@ -148,27 +149,3 @@ impl<'c> Tokens<'c> {
Ok(login)
}
}
-
-// Stable identifier for a token. Prefixed with `T`.
-#[derive(Clone, Debug, Eq, Hash, PartialEq, 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("T")
- }
-}
-
-impl fmt::Display for Id {
- fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
- self.0.fmt(f)
- }
-}