diff options
| author | Owen Jacobson <owen@grimoire.ca> | 2024-10-11 20:55:36 -0400 |
|---|---|---|
| committer | Owen Jacobson <owen@grimoire.ca> | 2024-10-11 20:55:36 -0400 |
| commit | 5ff106e910544788bc916626ae7665cb26e5af30 (patch) | |
| tree | f03f98677293a9d892e2d21d1a9a80aeedab60a3 /src/setup/repo.rs | |
| parent | d33c8af14c4adc1c15ab048299e06f9f35ae4de6 (diff) | |
Provide a separate "initial setup" endpoint that creates a user.
Diffstat (limited to 'src/setup/repo.rs')
| -rw-r--r-- | src/setup/repo.rs | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/setup/repo.rs b/src/setup/repo.rs new file mode 100644 index 0000000..de93f51 --- /dev/null +++ b/src/setup/repo.rs @@ -0,0 +1,28 @@ +use sqlx::{sqlite::Sqlite, SqliteConnection, Transaction}; + +pub trait Provider { + fn setup(&mut self) -> Setup; +} + +impl<'c> Provider for Transaction<'c, Sqlite> { + fn setup(&mut self) -> Setup { + Setup(self) + } +} + +pub struct Setup<'t>(&'t mut SqliteConnection); + +impl<'c> Setup<'c> { + pub async fn completed(&mut self) -> Result<bool, sqlx::Error> { + let completed = sqlx::query_scalar!( + r#" + select count(*) > 0 as "completed: bool" + from login + "#, + ) + .fetch_one(&mut *self.0) + .await?; + + Ok(completed) + } +} |
