2024-12-27 23:00:38 +01:00
|
|
|
use chrono::{DateTime, Utc};
|
|
|
|
|
use sqlx::types::Json;
|
|
|
|
|
use fully_pub::fully_pub;
|
|
|
|
|
|
2025-11-11 17:10:47 +01:00
|
|
|
use sqlxgentools_attrs::{SqlGeneratorDerive, SqlGeneratorModelWithId, sql_generator_model};
|
|
|
|
|
use sqlxgentools_misc::{DatabaseLine, ForeignRef};
|
2024-12-27 23:00:38 +01:00
|
|
|
|
|
|
|
|
#[derive(sqlx::Type, Clone, Debug, PartialEq)]
|
2025-10-12 14:02:20 +02:00
|
|
|
#[fully_pub]
|
2024-12-27 23:00:38 +01:00
|
|
|
enum UserStatus {
|
|
|
|
|
Disabled,
|
|
|
|
|
Invited,
|
|
|
|
|
Active,
|
|
|
|
|
Archived
|
|
|
|
|
}
|
|
|
|
|
|
2025-11-11 17:10:47 +01:00
|
|
|
#[derive(SqlGeneratorDerive, SqlGeneratorModelWithId, sqlx::FromRow, Debug, Clone)]
|
2024-12-27 23:00:38 +01:00
|
|
|
#[sql_generator_model(table_name="usersss")]
|
|
|
|
|
#[fully_pub]
|
|
|
|
|
struct User {
|
|
|
|
|
#[sql_generator_field(is_primary=true)]
|
|
|
|
|
id: String,
|
|
|
|
|
#[sql_generator_field(is_unique=true)]
|
|
|
|
|
handle: String,
|
|
|
|
|
full_name: Option<String>,
|
|
|
|
|
prefered_color: Option<i64>,
|
|
|
|
|
last_login_at: Option<DateTime<Utc>>,
|
|
|
|
|
status: UserStatus,
|
|
|
|
|
groups: Json<Vec<String>>,
|
2025-11-11 17:10:47 +01:00
|
|
|
avatar_bytes: Option<Vec<u8>>
|
2024-12-27 23:00:38 +01:00
|
|
|
}
|
|
|
|
|
|
2025-11-11 17:10:47 +01:00
|
|
|
|
|
|
|
|
#[derive(SqlGeneratorDerive, SqlGeneratorModelWithId, sqlx::FromRow, Debug, Clone)]
|
2025-07-31 17:15:00 +02:00
|
|
|
#[sql_generator_model(table_name="user_tokens")]
|
|
|
|
|
#[fully_pub]
|
|
|
|
|
struct UserToken {
|
|
|
|
|
#[sql_generator_field(is_primary=true)]
|
|
|
|
|
id: String,
|
|
|
|
|
secret: String,
|
|
|
|
|
last_use_time: Option<DateTime<Utc>>,
|
|
|
|
|
creation_time: DateTime<Utc>,
|
2025-11-11 17:10:47 +01:00
|
|
|
expiration_time: DateTime<Utc>,
|
|
|
|
|
#[sql_generator_field(reverse_relation_name="user_tokens")] // to generate get_user_tokens_of_user(&user_id)
|
|
|
|
|
user_id: ForeignRef<User>
|
2025-07-31 17:15:00 +02:00
|
|
|
}
|
|
|
|
|
|