Datenbankabfrage für Benutzer aktualisieren
This commit is contained in:
parent
580c2e7dc9
commit
42f7001b78
@ -16,3 +16,4 @@ uuid = { version = "1.12.1", features = ["v4", "serde"] }
|
|||||||
tokio = { version = "1.43.0", features = ["full"] }
|
tokio = { version = "1.43.0", features = ["full"] }
|
||||||
thiserror = { version = "2.0.11" }
|
thiserror = { version = "2.0.11" }
|
||||||
dotenvy = "0.15.7"
|
dotenvy = "0.15.7"
|
||||||
|
anyhow = "1.0.95"
|
||||||
|
@ -11,4 +11,5 @@ serde = { workspace = true }
|
|||||||
uuid = { workspace = true }
|
uuid = { workspace = true }
|
||||||
axum = { workspace = true }
|
axum = { workspace = true }
|
||||||
thiserror = { workspace = true }
|
thiserror = { workspace = true }
|
||||||
|
anyhow = { workspace = true }
|
||||||
validator = { version = "0.20.0", features = ["derive"] }
|
validator = { version = "0.20.0", features = ["derive"] }
|
||||||
|
@ -22,7 +22,7 @@ pub struct AktualisiereBenutzer {
|
|||||||
pub id: Uuid,
|
pub id: Uuid,
|
||||||
|
|
||||||
#[validate(length(min = 10, max = 255))]
|
#[validate(length(min = 10, max = 255))]
|
||||||
pub email: Option<String>,
|
pub e_mail: Option<String>,
|
||||||
|
|
||||||
#[validate(length(min = 8, max = 8))]
|
#[validate(length(min = 8, max = 8))]
|
||||||
pub kennung: Option<String>,
|
pub kennung: Option<String>,
|
||||||
@ -33,7 +33,7 @@ pub struct AktualisiereBenutzer {
|
|||||||
#[validate(length(max = 100))]
|
#[validate(length(max = 100))]
|
||||||
pub vorname: Option<String>,
|
pub vorname: Option<String>,
|
||||||
|
|
||||||
pub ist_akiv: Option<bool>,
|
pub ist_aktiv: Option<bool>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Deserialize)]
|
#[derive(Debug, Deserialize)]
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
use crate::entity::benutzer::{self};
|
use crate::entity::benutzer::{self};
|
||||||
use crate::error::AppError;
|
use crate::error::AppError;
|
||||||
use crate::model::benutzer::ErstelleBenutzer;
|
use crate::model::benutzer::{AktualisiereBenutzer, ErstelleBenutzer};
|
||||||
|
use anyhow::{Error, Result};
|
||||||
use axum::Json;
|
use axum::Json;
|
||||||
use sea_orm::{prelude::*, ActiveValue, DatabaseConnection, DbErr};
|
use sea_orm::{prelude::*, ActiveValue, DatabaseConnection, DbErr};
|
||||||
use validator::Validate;
|
use validator::Validate;
|
||||||
@ -9,6 +10,14 @@ pub struct BenutzerRepository {
|
|||||||
db: DatabaseConnection,
|
db: DatabaseConnection,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
macro_rules! update_if_some {
|
||||||
|
($active_model:ident, $source:ident, $field:ident) => {
|
||||||
|
if let Some(value) = $source.$field {
|
||||||
|
$active_model.$field = sea_orm::ActiveValue::Set(value);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
impl BenutzerRepository {
|
impl BenutzerRepository {
|
||||||
pub fn new(db: DatabaseConnection) -> Self {
|
pub fn new(db: DatabaseConnection) -> Self {
|
||||||
Self { db }
|
Self { db }
|
||||||
@ -19,6 +28,7 @@ impl BenutzerRepository {
|
|||||||
benutzer::Entity::find_by_id(id).one(&self.db).await
|
benutzer::Entity::find_by_id(id).one(&self.db).await
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Benutzer erstellen
|
||||||
pub async fn create_user(
|
pub async fn create_user(
|
||||||
&self,
|
&self,
|
||||||
Json(response): Json<ErstelleBenutzer>,
|
Json(response): Json<ErstelleBenutzer>,
|
||||||
@ -39,52 +49,33 @@ impl BenutzerRepository {
|
|||||||
Ok(Json(ersteller_benutzer))
|
Ok(Json(ersteller_benutzer))
|
||||||
}
|
}
|
||||||
|
|
||||||
// // Benutzer erstellen
|
// Benutzer aktualisieren
|
||||||
// pub async fn create_user(
|
pub async fn update_user(
|
||||||
// &self,
|
&self,
|
||||||
// kennung: String,
|
id: uuid::Uuid,
|
||||||
// nachname: String,
|
response: AktualisiereBenutzer,
|
||||||
// vorname: String,
|
) -> anyhow::Result<benutzer::Model, Error> {
|
||||||
// email: String,
|
response.validate()?;
|
||||||
// ) -> Result<benutzer::Model, DbErr> {
|
|
||||||
// benutzer::ActiveModel {
|
|
||||||
// id: ActiveValue::Set(uuid::Uuid::new_v4()),
|
|
||||||
// kennung: ActiveValue::Set(kennung),
|
|
||||||
// vorname: ActiveValue::Set(vorname),
|
|
||||||
// nachname: ActiveValue::Set(nachname),
|
|
||||||
// e_mail: ActiveValue::Set(email),
|
|
||||||
// ..Default::default()
|
|
||||||
// }
|
|
||||||
// .insert(&self.db)
|
|
||||||
// .await
|
|
||||||
// }
|
|
||||||
|
|
||||||
// // Benutzer aktualisieren
|
let benutzer = benutzer::Entity::find_by_id(id)
|
||||||
// pub async fn update_user(
|
.one(&self.db)
|
||||||
// &self,
|
.await?
|
||||||
// id: i32,
|
.ok_or(DbErr::Custom("User not found.".to_owned()))?;
|
||||||
// name: Option<String>,
|
|
||||||
// email: Option<String>,
|
let mut active_model: benutzer::ActiveModel = benutzer.into();
|
||||||
// ) -> Result<user::Model, DbErr> {
|
|
||||||
// let user = user::Entity::find_by_id(id)
|
update_if_some!(active_model, response, e_mail);
|
||||||
// .one(&self.db)
|
update_if_some!(active_model, response, kennung);
|
||||||
// .await?
|
update_if_some!(active_model, response, vorname);
|
||||||
// .ok_or(DbErr::Custom("User not found.".to_owned()))?;
|
update_if_some!(active_model, response, nachname);
|
||||||
//
|
update_if_some!(active_model, response, ist_aktiv);
|
||||||
// let mut user: user::ActiveModel = user.into();
|
|
||||||
// if let Some(name) = name {
|
Ok(active_model.update(&self.db).await?)
|
||||||
// user.name = ActiveValue::Set(name);
|
}
|
||||||
// }
|
|
||||||
// if let Some(email) = email {
|
// Benutzer löschen
|
||||||
// user.email = ActiveValue::Set(email);
|
pub async fn delete_user(&self, id: uuid::Uuid) -> Result<(), Error> {
|
||||||
// }
|
benutzer::Entity::delete_by_id(id).exec(&self.db).await?;
|
||||||
//
|
Ok(())
|
||||||
// user.update(&self.db).await
|
}
|
||||||
// }
|
|
||||||
//
|
|
||||||
// // Benutzer löschen
|
|
||||||
// pub async fn delete_user(&self, id: i32) -> Result<(), DbErr> {
|
|
||||||
// user::Entity::delete_by_id(id).exec(&self.db).await?;
|
|
||||||
// Ok(())
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
@ -8,10 +8,7 @@ use sea_orm::Database;
|
|||||||
#[tokio::main]
|
#[tokio::main]
|
||||||
async fn main() -> Result<(), AppError> {
|
async fn main() -> Result<(), AppError> {
|
||||||
dotenvy::dotenv().unwrap();
|
dotenvy::dotenv().unwrap();
|
||||||
// Datenbankverbindung herstellen
|
|
||||||
// let root = Path::new("/");
|
|
||||||
// env::set_current_dir(root);
|
|
||||||
//
|
|
||||||
let db = Database::connect(env::var("DATABASE_URL").unwrap()).await?;
|
let db = Database::connect(env::var("DATABASE_URL").unwrap()).await?;
|
||||||
|
|
||||||
// Service initialisieren
|
// Service initialisieren
|
||||||
|
Loading…
x
Reference in New Issue
Block a user