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}; #[derive(sqlx::Type, Clone, Debug, PartialEq)] #[fully_pub] enum UserStatus { Disabled, Invited, Active, Archived } #[derive(SqlGeneratorDerive, SqlGeneratorModelWithId, sqlx::FromRow, Debug, Clone)] #[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, prefered_color: Option, last_login_at: Option>, status: UserStatus, groups: Json>, avatar_bytes: Option> } #[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>, creation_time: DateTime, expiration_time: DateTime, #[sql_generator_field(reverse_relation_name="user_tokens")] // to generate get_user_tokens_of_user(&user_id) user_id: ForeignRef }