authorization_codes: crate, database, insert one

This commit is contained in:
Philippe Loctaux 2023-03-16 23:15:56 +01:00
parent 0b4aeb89cb
commit 471e2fc740
11 changed files with 159 additions and 0 deletions

View file

@ -0,0 +1,42 @@
use crate::error::Error;
use crate::AuthorizationCodes;
use chrono::{Duration, Utc};
use database::sqlx::SqliteExecutor;
use database::AuthorizationCodes as DatabaseAuthorizationCodes;
use id::{AppID, UserID};
impl From<DatabaseAuthorizationCodes> for AuthorizationCodes {
fn from(db: DatabaseAuthorizationCodes) -> Self {
Self {
// Info
code: db.code,
app: AppID(db.app),
user: UserID(db.user),
// Timings
created_at: db.created_at,
expires_at: db.expires_at,
used_at: db.used_at,
}
}
}
impl AuthorizationCodes {
pub async fn insert(
conn: impl SqliteExecutor<'_>,
code: &str,
app: &AppID,
user: &UserID,
) -> Result<Option<()>, Error> {
let expires_at = Utc::now() + Duration::minutes(10);
Ok(DatabaseAuthorizationCodes::insert(
conn,
code,
app.as_ref(),
user.as_ref(),
expires_at.timestamp(),
)
.await?)
}
}

View file

@ -0,0 +1,8 @@
// error
#[derive(thiserror::Error)]
// the rest
#[derive(Debug)]
pub enum Error {
#[error("Database: {0}")]
Database(#[from] database::Error),
}

View file

@ -0,0 +1,20 @@
mod database;
mod error;
use chrono::{DateTime, Utc};
use id::{AppID, UserID};
pub use crate::error::Error;
#[derive(Debug)]
pub struct AuthorizationCodes {
// Info
code: String,
app: AppID,
user: UserID,
// Timings
created_at: DateTime<Utc>,
expires_at: DateTime<Utc>,
used_at: Option<DateTime<Utc>>,
}