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 { 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() } }