This commit is contained in:
2025-09-19 19:33:53 -04:00
parent 8844ee75fe
commit 84312d0b50
36 changed files with 799 additions and 694 deletions

View File

@@ -1,10 +1,9 @@
use crate::db;
use crate::{account::hash, error::ApiResult};
use chrono::{DateTime, Utc};
use serde::{Deserialize, Serialize};
#[allow(unused_imports)] // Import is used in schema examples
use serde_json::json;
use sqlx::{Postgres, QueryBuilder};
use sqlx::{Pool, Postgres, QueryBuilder};
use utoipa::ToSchema;
pub const ADMIN_ROLE: &str = "ADMIN";
@@ -107,9 +106,7 @@ pub struct UpdateUser {
}
impl UpdateUser {
pub async fn update(&self, username: &str) -> ApiResult<User> {
let pool = db::pool();
pub async fn update(&self, pool: &Pool<Postgres>, username: &str) -> ApiResult<User> {
let mut query_builder: QueryBuilder<Postgres> =
QueryBuilder::new(&format!("UPDATE {} SET ", TABLE_NAME));
@@ -189,8 +186,7 @@ pub struct User {
}
impl User {
pub async fn select(username: &str) -> Option<Self> {
let pool = db::pool();
pub async fn select(pool: &Pool<Postgres>, username: &str) -> Option<Self> {
let user: Option<Self> = sqlx::query_as::<_, Self>(&format!(
r#"
SELECT * FROM {} WHERE username = $1
@@ -208,8 +204,7 @@ impl User {
user
}
pub async fn select_by_email(email: &str) -> Option<Self> {
let pool = db::pool();
pub async fn select_by_email(pool: &Pool<Postgres>, email: &str) -> Option<Self> {
let user: Option<Self> = sqlx::query_as::<_, Self>(&format!(
r#"
SELECT * FROM {} WHERE email = $1
@@ -228,9 +223,7 @@ impl User {
}
#[allow(dead_code)]
pub async fn count() -> i64 {
let pool = db::pool();
pub async fn count(pool: &Pool<Postgres>) -> i64 {
sqlx::query_scalar(&format!(
r#"
SELECT COUNT(*) FROM {}
@@ -242,8 +235,7 @@ impl User {
.unwrap_or_else(|_| 0)
}
pub async fn insert(&self) -> ApiResult<User> {
let pool = db::pool();
pub async fn insert(&self, pool: &Pool<Postgres>) -> ApiResult<User> {
let user: User = sqlx::query_as::<_, Self>(&format!(
r#"
INSERT INTO {} (