use sea_orm::entity::Set; use sea_orm::entity::prelude::*; #[sea_orm::model] #[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel)] #[sea_orm(table_name = "auth_users")] pub struct Model { #[sea_orm(primary_key, auto_increment = false)] pub id: i64, #[sea_orm(unique, column_type = "String(StringLen::N(32))")] pub username: String, #[sea_orm(unique, column_type = "String(StringLen::N(32))")] pub lowername: String, #[sea_orm(column_type = "String(StringLen::N(64))")] pub displayname: Option, pub birth_date: Option, #[sea_orm(unique, column_type = "String(StringLen::N(255))")] pub email: String, #[sea_orm(default_value = false)] pub public_show_email: bool, pub email_verified_at: Option, #[sea_orm(column_type = "String(StringLen::N(255))")] pub password_hash: String, pub password_updated_at: Option, #[sea_orm(default_value = false)] pub password_must_change: bool, #[sea_orm(default_value = true)] pub allow_use: bool, #[sea_orm(default_value = false)] pub forbid_login: bool, #[sea_orm(column_type = "Text")] pub forbid_login_reason: Option, pub endtime_forbid_login_at: Option, pub last_login_at: Option, #[sea_orm(default_value = false)] pub is_admin: bool, #[sea_orm(default_value = false)] pub bot: bool, #[sea_orm(default_value = false)] pub system: bool, #[sea_orm(default_expr = "Expr::current_timestamp()")] pub created_at: DateTimeUtc, #[sea_orm(default_expr = "Expr::current_timestamp()")] pub updated_at: DateTimeUtc, #[sea_orm(default_value = 1)] pub security_version: i32, #[sea_orm(default_value = 1)] pub version: i32, pub deleted_at: Option, /// 删除请求时间;宽限期内账号仍可用,可取消;到期后才写 deleted_at。 pub deletion_requested_at: Option, #[sea_orm(has_many)] pub ssh_keys: HasMany, #[sea_orm(has_many)] pub events: HasMany, #[sea_orm(has_many)] pub mfa: HasMany, #[sea_orm(has_many)] pub sessions: HasMany, #[sea_orm(has_many)] pub verification_tokens: HasMany, #[sea_orm(has_many)] pub mfa_backup_codes: HasMany, } #[async_trait::async_trait] impl ActiveModelBehavior for ActiveModel { async fn before_save(mut self, _db: &C, _insert: bool) -> Result where C: ConnectionTrait, { self.updated_at = Set(chrono::Utc::now()); Ok(self) } }