diff options
| author | Owen Jacobson <owen@grimoire.ca> | 2024-10-22 19:08:53 -0400 |
|---|---|---|
| committer | Owen Jacobson <owen@grimoire.ca> | 2024-10-22 19:12:30 -0400 |
| commit | db940bacd096a33a65f29759e70ea1acf6186a67 (patch) | |
| tree | c6901c22a45e36415f63efe988d4d4f2a309df81 /src/login/app.rs | |
| parent | 3f9648eed48cd8b6cd35d0ae2ee5bbe25fa735ac (diff) | |
Provide `hi-recanonicalize` to recover from canonicalized-name problems.
Diffstat (limited to 'src/login/app.rs')
| -rw-r--r-- | src/login/app.rs | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/src/login/app.rs b/src/login/app.rs index 37f1249..2f5896f 100644 --- a/src/login/app.rs +++ b/src/login/app.rs @@ -1,6 +1,10 @@ use sqlx::sqlite::SqlitePool; -use super::{repo::Provider as _, Login, Password}; +use super::repo::Provider as _; + +#[cfg(test)] +use super::{Login, Password}; +#[cfg(test)] use crate::{ clock::DateTime, event::{repo::Provider as _, Broadcaster, Event}, @@ -9,14 +13,22 @@ use crate::{ pub struct Logins<'a> { db: &'a SqlitePool, + #[cfg(test)] events: &'a Broadcaster, } impl<'a> Logins<'a> { + #[cfg(not(test))] + pub const fn new(db: &'a SqlitePool) -> Self { + Self { db } + } + + #[cfg(test)] pub const fn new(db: &'a SqlitePool, events: &'a Broadcaster) -> Self { Self { db, events } } + #[cfg(test)] pub async fn create( &self, name: &Name, @@ -35,6 +47,14 @@ impl<'a> Logins<'a> { Ok(login.as_created()) } + + pub async fn recanonicalize(&self) -> Result<(), sqlx::Error> { + let mut tx = self.db.begin().await?; + tx.logins().recanonicalize().await?; + tx.commit().await?; + + Ok(()) + } } #[derive(Debug, thiserror::Error)] |
