user-role-cluster (#761)
Some checks failed
CI/CD Pipeline / deploy-staging (push) Blocked by required conditions
CI/CD Pipeline / deploy-main (push) Blocked by required conditions
CI/CD Pipeline / test (push) Has been cancelled

Reviewed-on: #761
This commit is contained in:
2024-10-11 12:39:23 +02:00
parent 0cc72f17a1
commit a6a143f238
10 changed files with 199 additions and 32 deletions

View File

@ -1,17 +1,18 @@
use std::ops::DerefMut;
use serde::Serialize;
use serde::{Deserialize, Serialize};
use sqlx::{FromRow, Sqlite, SqlitePool, Transaction};
#[derive(FromRow, Serialize, Clone)]
#[derive(FromRow, Serialize, Clone, Deserialize, Debug)]
pub struct Role {
pub(crate) id: i64,
pub(crate) name: String,
pub(crate) cluster: Option<String>,
}
impl Role {
pub async fn all(db: &SqlitePool) -> Vec<Role> {
sqlx::query_as!(Role, "SELECT id, name FROM role")
sqlx::query_as!(Role, "SELECT id, name, cluster FROM role")
.fetch_all(db)
.await
.unwrap()
@ -21,7 +22,7 @@ impl Role {
sqlx::query_as!(
Self,
"
SELECT id, name
SELECT id, name, cluster
FROM role
WHERE id like ?
",
@ -31,12 +32,41 @@ WHERE id like ?
.await
.ok()
}
pub async fn find_by_id_tx(db: &mut Transaction<'_, Sqlite>, name: i32) -> Option<Self> {
sqlx::query_as!(
Self,
"
SELECT id, name, cluster
FROM role
WHERE id like ?
",
name
)
.fetch_one(db.deref_mut())
.await
.ok()
}
pub async fn find_by_cluster_tx(db: &mut Transaction<'_, Sqlite>, name: i32) -> Option<Self> {
sqlx::query_as!(
Self,
"
SELECT id, name, cluster
FROM role
WHERE cluster = ?
",
name
)
.fetch_one(db.deref_mut())
.await
.ok()
}
pub async fn find_by_name(db: &SqlitePool, name: &str) -> Option<Self> {
sqlx::query_as!(
Self,
"
SELECT id, name
SELECT id, name, cluster
FROM role
WHERE name like ?
",
@ -51,7 +81,7 @@ WHERE name like ?
sqlx::query_as!(
Self,
"
SELECT id, name
SELECT id, name, cluster
FROM role
WHERE name like ?
",