Add first routes for accounts management

This commit is contained in:
2025-04-03 23:14:55 +02:00
parent 03f57a0ad7
commit 72e67d9e91
14 changed files with 202 additions and 43 deletions

View File

@@ -4,7 +4,7 @@ use crate::connections::db_connection::db;
use crate::constants;
use crate::models::tokens::{NewToken, Token, TokenID};
use crate::models::users::UserID;
use crate::schema::token;
use crate::schema::tokens;
use crate::utils::rand_utils::rand_string;
use crate::utils::time_utils::time;
@@ -41,7 +41,7 @@ pub async fn create(new_token: NewTokenInfo) -> anyhow::Result<Token> {
right_attachment: new_token.right_attachment,
};
let res = diesel::insert_into(token::table)
let res = diesel::insert_into(tokens::table)
.values(&t)
.get_result(&mut db()?)?;
@@ -50,36 +50,36 @@ pub async fn create(new_token: NewTokenInfo) -> anyhow::Result<Token> {
/// Get a single token by its id
pub async fn get_by_id(token_id: TokenID) -> anyhow::Result<Token> {
Ok(token::table
.filter(token::dsl::id.eq(token_id.0))
Ok(tokens::table
.filter(tokens::dsl::id.eq(token_id.0))
.get_result(&mut db()?)?)
}
/// Get a single token by its name
pub fn get_by_name(name: &str) -> anyhow::Result<Token> {
Ok(token::table
.filter(token::dsl::name.eq(name))
Ok(tokens::table
.filter(tokens::dsl::name.eq(name))
.get_result(&mut db()?)?)
}
/// Get a single token by its value
pub async fn get_by_value(value: &str) -> anyhow::Result<Token> {
Ok(token::table
.filter(token::dsl::token_value.eq(value))
Ok(tokens::table
.filter(tokens::dsl::token_value.eq(value))
.get_result(&mut db()?)?)
}
/// Get the token of a user
pub async fn get_list_user(id: UserID) -> anyhow::Result<Vec<Token>> {
Ok(token::table
.filter(token::dsl::user_id.eq(id.0))
Ok(tokens::table
.filter(tokens::dsl::user_id.eq(id.0))
.get_results(&mut db()?)?)
}
/// Update last used value of a token
pub async fn update_time_used(token: &Token) -> anyhow::Result<()> {
diesel::update(token::dsl::token.filter(token::dsl::id.eq(token.id().0)))
.set(token::dsl::time_used.eq(time() as i64))
diesel::update(tokens::dsl::tokens.filter(tokens::dsl::id.eq(token.id().0)))
.set(tokens::dsl::time_used.eq(time() as i64))
.execute(&mut db()?)?;
Ok(())
}
@@ -87,10 +87,10 @@ pub async fn update_time_used(token: &Token) -> anyhow::Result<()> {
/// Delete the token of a user
pub async fn delete(user_id: UserID, token_id: TokenID) -> anyhow::Result<()> {
diesel::delete(
token::dsl::token.filter(
token::dsl::id
tokens::dsl::tokens.filter(
tokens::dsl::id
.eq(token_id.0)
.and(token::dsl::user_id.eq(user_id.0)),
.and(tokens::dsl::user_id.eq(user_id.0)),
),
)
.execute(&mut db()?)?;