summaryrefslogtreecommitdiff
path: root/src/repo
diff options
context:
space:
mode:
authorOwen Jacobson <owen@grimoire.ca>2024-10-02 00:41:25 -0400
committerOwen Jacobson <owen@grimoire.ca>2024-10-02 00:41:38 -0400
commit357116366c1307bedaac6a3dfe9c5ed8e0e0c210 (patch)
treed701378187d8b0f99d524991925e8348c6cab0d6 /src/repo
parentf878f0b5eaa44e8ee8d67cbfd706926ff2119113 (diff)
First pass on reorganizing the backend.
This is primarily renames and repackagings.
Diffstat (limited to 'src/repo')
-rw-r--r--src/repo/channel.rs15
-rw-r--r--src/repo/login.rs (renamed from src/repo/login/store.rs)15
-rw-r--r--src/repo/login/extract.rs15
-rw-r--r--src/repo/login/mod.rs4
-rw-r--r--src/repo/message.rs7
-rw-r--r--src/repo/mod.rs1
-rw-r--r--src/repo/sequence.rs27
-rw-r--r--src/repo/token.rs10
8 files changed, 10 insertions, 84 deletions
diff --git a/src/repo/channel.rs b/src/repo/channel.rs
index 9f1d930..18cd81f 100644
--- a/src/repo/channel.rs
+++ b/src/repo/channel.rs
@@ -1,10 +1,9 @@
use sqlx::{sqlite::Sqlite, SqliteConnection, Transaction};
-use super::sequence::Sequence;
use crate::{
- channel::Id,
+ channel::{Channel, Id},
clock::DateTime,
- events::types::{self},
+ event::{types, Sequence},
};
pub trait Provider {
@@ -19,16 +18,6 @@ impl<'c> Provider for Transaction<'c, Sqlite> {
pub struct Channels<'t>(&'t mut SqliteConnection);
-#[derive(Clone, Debug, Eq, PartialEq, serde::Serialize)]
-pub struct Channel {
- pub id: Id,
- pub name: String,
- #[serde(skip)]
- pub created_at: DateTime,
- #[serde(skip)]
- pub created_sequence: Sequence,
-}
-
impl<'c> Channels<'c> {
pub async fn create(
&mut self,
diff --git a/src/repo/login/store.rs b/src/repo/login.rs
index 47d1a7c..d1a02c4 100644
--- a/src/repo/login/store.rs
+++ b/src/repo/login.rs
@@ -1,6 +1,6 @@
use sqlx::{sqlite::Sqlite, SqliteConnection, Transaction};
-use crate::{login::Id, password::StoredHash};
+use crate::login::{password::StoredHash, Id, Login};
pub trait Provider {
fn logins(&mut self) -> Logins;
@@ -14,19 +14,6 @@ impl<'c> Provider for Transaction<'c, Sqlite> {
pub struct Logins<'t>(&'t mut SqliteConnection);
-// This also implements FromRequestParts (see `./extract.rs`). As a result, it
-// can be used as an extractor for endpoints that want to require login, or for
-// endpoints that need to behave differently depending on whether the client is
-// or is not logged in.
-#[derive(Clone, Debug, Eq, PartialEq, serde::Serialize)]
-pub struct Login {
- pub id: Id,
- pub name: String,
- // The omission of the hashed password is deliberate, to minimize the
- // chance that it ends up tangled up in debug output or in some other chunk
- // of logic elsewhere.
-}
-
impl<'c> Logins<'c> {
pub async fn create(
&mut self,
diff --git a/src/repo/login/extract.rs b/src/repo/login/extract.rs
deleted file mode 100644
index ab61106..0000000
--- a/src/repo/login/extract.rs
+++ /dev/null
@@ -1,15 +0,0 @@
-use axum::{extract::FromRequestParts, http::request::Parts};
-
-use super::Login;
-use crate::{app::App, login::extract::Identity};
-
-#[async_trait::async_trait]
-impl FromRequestParts<App> for Login {
- type Rejection = <Identity as FromRequestParts<App>>::Rejection;
-
- async fn from_request_parts(parts: &mut Parts, state: &App) -> Result<Self, Self::Rejection> {
- let identity = Identity::from_request_parts(parts, state).await?;
-
- Ok(identity.login)
- }
-}
diff --git a/src/repo/login/mod.rs b/src/repo/login/mod.rs
deleted file mode 100644
index 4ff7a96..0000000
--- a/src/repo/login/mod.rs
+++ /dev/null
@@ -1,4 +0,0 @@
-mod extract;
-mod store;
-
-pub use self::store::{Login, Provider};
diff --git a/src/repo/message.rs b/src/repo/message.rs
deleted file mode 100644
index acde3ea..0000000
--- a/src/repo/message.rs
+++ /dev/null
@@ -1,7 +0,0 @@
-use crate::message::Id;
-
-#[derive(Clone, Debug, Eq, PartialEq, serde::Serialize)]
-pub struct Message {
- pub id: Id,
- pub body: String,
-}
diff --git a/src/repo/mod.rs b/src/repo/mod.rs
index 8f271f4..69ad82c 100644
--- a/src/repo/mod.rs
+++ b/src/repo/mod.rs
@@ -1,7 +1,6 @@
pub mod channel;
pub mod error;
pub mod login;
-pub mod message;
pub mod pool;
pub mod sequence;
pub mod token;
diff --git a/src/repo/sequence.rs b/src/repo/sequence.rs
index c47b41c..c985869 100644
--- a/src/repo/sequence.rs
+++ b/src/repo/sequence.rs
@@ -1,7 +1,7 @@
-use std::fmt;
-
use sqlx::{sqlite::Sqlite, SqliteConnection, Transaction};
+use crate::event::Sequence;
+
pub trait Provider {
fn sequence(&mut self) -> Sequences;
}
@@ -42,26 +42,3 @@ impl<'c> Sequences<'c> {
Ok(next)
}
}
-
-#[derive(
- Clone,
- Copy,
- Debug,
- Eq,
- Ord,
- PartialEq,
- PartialOrd,
- serde::Deserialize,
- serde::Serialize,
- sqlx::Type,
-)]
-#[serde(transparent)]
-#[sqlx(transparent)]
-pub struct Sequence(i64);
-
-impl fmt::Display for Sequence {
- fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
- let Self(value) = self;
- value.fmt(f)
- }
-}
diff --git a/src/repo/token.rs b/src/repo/token.rs
index 79e5c54..5f64dac 100644
--- a/src/repo/token.rs
+++ b/src/repo/token.rs
@@ -1,10 +1,10 @@
use sqlx::{sqlite::Sqlite, SqliteConnection, Transaction};
use uuid::Uuid;
-use super::login::Login;
use crate::{
clock::DateTime,
- login::{self, extract::IdentitySecret, token::Id},
+ login::{self, Login},
+ token::{Id, Secret},
};
pub trait Provider {
@@ -26,7 +26,7 @@ impl<'c> Tokens<'c> {
&mut self,
login: &Login,
issued_at: &DateTime,
- ) -> Result<IdentitySecret, sqlx::Error> {
+ ) -> Result<Secret, sqlx::Error> {
let id = Id::generate();
let secret = Uuid::new_v4().to_string();
@@ -35,7 +35,7 @@ impl<'c> Tokens<'c> {
insert
into token (id, secret, login, issued_at, last_used_at)
values ($1, $2, $3, $4, $4)
- returning secret as "secret!: IdentitySecret"
+ returning secret as "secret!: Secret"
"#,
id,
secret,
@@ -103,7 +103,7 @@ impl<'c> Tokens<'c> {
// timestamp will be set to `used_at`.
pub async fn validate(
&mut self,
- secret: &IdentitySecret,
+ secret: &Secret,
used_at: &DateTime,
) -> Result<(Id, Login), sqlx::Error> {
// I would use `update … returning` to do this in one query, but