summaryrefslogtreecommitdiff
path: root/src/login/app.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/login/app.rs')
-rw-r--r--src/login/app.rs56
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),
- }
- }
-}