Skip to main content

aj_models/
users.rs

1use chrono::{DateTime, Utc};
2use serde::{Deserialize, Serialize};
3
4#[derive(Clone, Debug, Serialize, Deserialize)]
5pub struct RegisterRequest {
6    pub login: String,
7    pub password: String,
8    pub password_confirmation: String,
9}
10
11#[derive(Clone, Debug, Serialize, Deserialize)]
12pub struct LoginRequest {
13    pub login: String,
14    pub password: String,
15}
16
17#[derive(Deserialize, Serialize, Clone, Debug)]
18pub struct PublicUserData {
19    pub id: i64,
20    pub login: String,
21    pub admin_level: AdminLevel,
22}
23
24#[derive(Serialize, Deserialize, Clone, Debug)]
25pub struct PrivateUserData {
26    pub id: i64,
27    pub login: String,
28    pub admin_level: AdminLevel,
29    pub created_at: DateTime<Utc>,
30}
31
32#[derive(Clone, PartialEq, Eq, Debug, Serialize, Deserialize, PartialOrd, Ord)]
33#[cfg_attr(feature = "sqlx", derive(sqlx::Type))]
34#[cfg_attr(
35    feature = "sqlx",
36    sqlx(type_name = "admin_level", rename_all = "snake_case")
37)]
38#[serde(rename_all = "snake_case")]
39pub enum AdminLevel {
40    User,
41    Admin,
42    Owner,
43}