Files
oxspeak_server/src/routes/user/mapper.rs
T
2026-05-16 17:57:54 +02:00

42 lines
1.4 KiB
Rust

use crate::auth::password::hash_password;
use crate::models::user;
use crate::routes::user::dto::{CreateUserRequest, UpdateUserRequest, UserResponse};
use anyhow::Result as AnyResult;
use sea_orm::{NotSet, Set};
use uuid::Uuid;
pub fn user_model_to_user_response(model: user::Model) -> UserResponse {
UserResponse {
id: model.id,
username: model.username,
pub_key: model.pub_key,
is_superuser: model.is_superuser,
created_at: model.created_at,
updated_at: model.updated_at,
}
}
pub fn create_request_to_am(payload: CreateUserRequest) -> AnyResult<user::ActiveModel> {
Ok(user::ActiveModel {
id: Set(Uuid::new_v4()),
username: Set(payload.username),
password: Set(hash_password(&payload.password)?),
pub_key: Set(payload.pub_key),
is_superuser: Set(payload.is_superuser),
created_at: Set(chrono::Utc::now()),
updated_at: Set(chrono::Utc::now()),
})
}
pub fn update_request_to_am(id: Uuid, payload: UpdateUserRequest) -> user::ActiveModel {
user::ActiveModel {
id: Set(id),
username: Set(payload.username),
password: NotSet, // On ne change pas le password via PUT général
pub_key: Set(payload.pub_key),
is_superuser: Set(payload.is_superuser),
updated_at: Set(chrono::Utc::now()),
..Default::default()
}
}