ironflow_api/entities/
user.rs1use chrono::{DateTime, Utc};
4use ironflow_store::entities::User;
5use serde::{Deserialize, Serialize};
6use uuid::Uuid;
7use validator::Validate;
8
9#[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))]
11#[derive(Debug, Serialize)]
12pub struct UserResponse {
13 pub id: Uuid,
15 pub email: String,
17 pub username: String,
19 pub is_admin: bool,
21 pub created_at: DateTime<Utc>,
23 pub updated_at: DateTime<Utc>,
25}
26
27impl From<User> for UserResponse {
28 fn from(user: User) -> Self {
29 Self {
30 id: user.id,
31 email: user.email,
32 username: user.username,
33 is_admin: user.is_admin,
34 created_at: user.created_at,
35 updated_at: user.updated_at,
36 }
37 }
38}
39
40#[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))]
42#[derive(Debug, Deserialize, Validate)]
43pub struct CreateUserRequest {
44 #[validate(email)]
46 pub email: String,
47 #[validate(length(min = 3, message = "username must be at least 3 characters"))]
49 pub username: String,
50 #[validate(length(min = 8, message = "password must be at least 8 characters"))]
52 pub password: String,
53 pub is_admin: bool,
55}
56
57#[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))]
59#[derive(Debug, Deserialize)]
60pub struct UpdateRoleRequest {
61 pub is_admin: bool,
63}