sqlxgentools/lib/sandbox/src/models/user.rs

48 lines
1.3 KiB
Rust
Raw Normal View History

2024-12-27 23:00:38 +01:00
use chrono::{DateTime, Utc};
use sqlx::types::Json;
use fully_pub::fully_pub;
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
}
#[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>>,
avatar_bytes: Option<Vec<u8>>
2024-12-27 23:00:38 +01:00
}
#[derive(SqlGeneratorDerive, SqlGeneratorModelWithId, sqlx::FromRow, Debug, Clone)]
#[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>,
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>
}