diff options
| author | Owen Jacobson <owen@grimoire.ca> | 2025-03-23 15:58:33 -0400 |
|---|---|---|
| committer | Owen Jacobson <owen@grimoire.ca> | 2025-03-23 16:25:22 -0400 |
| commit | 2420f1e75d54a5f209b0267715f078a369d81eb1 (patch) | |
| tree | 20edd531a3f2f765a23fef8e7a508c91bc7dc294 /src/login/app.rs | |
| parent | 7e15690d54ff849596401b43d163df9353062850 (diff) | |
Rename the `login` module to `user`.
Diffstat (limited to 'src/login/app.rs')
| -rw-r--r-- | src/login/app.rs | 56 |
1 files changed, 0 insertions, 56 deletions
diff --git a/src/login/app.rs b/src/login/app.rs deleted file mode 100644 index 2da4d6a..0000000 --- a/src/login/app.rs +++ /dev/null @@ -1,56 +0,0 @@ -use sqlx::sqlite::SqlitePool; - -use super::{ - Login, Password, - create::{self, Create}, -}; -use crate::{clock::DateTime, event::Broadcaster, name::Name}; - -pub struct Logins<'a> { - db: &'a SqlitePool, - events: &'a Broadcaster, -} - -impl<'a> Logins<'a> { - pub const fn new(db: &'a SqlitePool, events: &'a Broadcaster) -> Self { - Self { db, events } - } - - pub async fn create( - &self, - name: &Name, - password: &Password, - created_at: &DateTime, - ) -> Result<Login, CreateError> { - let create = Create::begin(name, password, created_at); - let validated = create.validate()?; - - let mut tx = self.db.begin().await?; - let stored = validated.store(&mut tx).await?; - tx.commit().await?; - - let login = stored.publish(self.events); - - Ok(login.as_created()) - } -} - -#[derive(Debug, thiserror::Error)] -pub enum CreateError { - #[error("invalid login name: {0}")] - InvalidName(Name), - #[error(transparent)] - PasswordHash(#[from] password_hash::Error), - #[error(transparent)] - Database(#[from] sqlx::Error), -} - -#[cfg(test)] -impl From<create::Error> for CreateError { - fn from(error: create::Error) -> Self { - match error { - create::Error::InvalidName(name) => Self::InvalidName(name), - create::Error::PasswordHash(error) => Self::PasswordHash(error), - } - } -} |
