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}