1use chrono::{DateTime, Utc};
4use serde::{Deserialize, Serialize};
5
6#[derive(Clone, Debug, Serialize, Deserialize)]
8pub struct RegisterRequest {
9 pub login: String,
11 pub password: String,
13 pub password_confirmation: String,
15}
16
17#[derive(Clone, Debug, Serialize, Deserialize)]
19pub struct LoginRequest {
20 pub login: String,
22 pub password: String,
24}
25
26#[derive(Clone, PartialEq, Eq, Debug, Serialize, Deserialize, PartialOrd, Ord)]
28#[cfg_attr(feature = "sqlx", derive(sqlx::Type))]
29#[cfg_attr(
30 feature = "sqlx",
31 sqlx(type_name = "admin_level", rename_all = "snake_case")
32)]
33#[serde(rename_all = "snake_case")]
34pub enum AdminLevel {
35 NotAdmin,
37 BetaTester,
39 Admin,
41 Owner,
43}
44
45#[derive(Deserialize, Serialize, Clone, Debug)]
47pub struct PublicUserData {
48 pub id: i64,
50 pub login: String,
52 pub admin_level: AdminLevel,
54}
55
56#[derive(Deserialize, Serialize, Clone, Debug)]
58pub struct PrivateUserData {
59 pub id: i64,
61 pub login: String,
63 pub admin_level: AdminLevel,
65 pub created_at: DateTime<Utc>,
67}