From 471e2fc74066d9ac203eb68cc40157a8dc2dbe6a Mon Sep 17 00:00:00 2001
From: Philippe Loctaux
Date: Thu, 16 Mar 2023 23:15:56 +0100
Subject: [PATCH] authorization_codes: crate, database, insert one
---
Cargo.lock | 10 +++++
crates/authorization_codes/Cargo.toml | 12 ++++++
crates/authorization_codes/src/database.rs | 42 +++++++++++++++++++
crates/authorization_codes/src/error.rs | 8 ++++
crates/authorization_codes/src/lib.rs | 20 +++++++++
...0230316213207_authorization_codes.down.sql | 1 +
.../20230316213207_authorization_codes.up.sql | 12 ++++++
.../queries/authorization_codes/insert.sql | 2 +
crates/database/sqlx-data.json | 10 +++++
crates/database/src/tables.rs | 2 +
.../src/tables/authorization_codes.rs | 40 ++++++++++++++++++
11 files changed, 159 insertions(+)
create mode 100644 crates/authorization_codes/Cargo.toml
create mode 100644 crates/authorization_codes/src/database.rs
create mode 100644 crates/authorization_codes/src/error.rs
create mode 100644 crates/authorization_codes/src/lib.rs
create mode 100644 crates/database/migrations/20230316213207_authorization_codes.down.sql
create mode 100644 crates/database/migrations/20230316213207_authorization_codes.up.sql
create mode 100644 crates/database/queries/authorization_codes/insert.sql
create mode 100644 crates/database/src/tables/authorization_codes.rs
diff --git a/Cargo.lock b/Cargo.lock
index ffb75c4..554495a 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -164,6 +164,16 @@ dependencies = [
"winapi 0.3.9",
]
+[[package]]
+name = "authorization_codes"
+version = "0.0.0"
+dependencies = [
+ "chrono",
+ "database",
+ "id",
+ "thiserror",
+]
+
[[package]]
name = "autocfg"
version = "1.1.0"
diff --git a/crates/authorization_codes/Cargo.toml b/crates/authorization_codes/Cargo.toml
new file mode 100644
index 0000000..facc16d
--- /dev/null
+++ b/crates/authorization_codes/Cargo.toml
@@ -0,0 +1,12 @@
+[package]
+name = "authorization_codes"
+version = "0.0.0"
+edition = "2021"
+
+[dependencies]
+thiserror = { workspace = true }
+chrono = { workspace = true }
+
+# local crates
+database = { path = "../database" }
+id = { path = "../id" }
diff --git a/crates/authorization_codes/src/database.rs b/crates/authorization_codes/src/database.rs
new file mode 100644
index 0000000..836ef0f
--- /dev/null
+++ b/crates/authorization_codes/src/database.rs
@@ -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 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