Skip to content
Clone
main
80 lines 2.7 KB Rust
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<String>,
pub birth_date: Option<Date>,
#[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<DateTimeUtc>,
#[sea_orm(column_type = "String(StringLen::N(255))")]
pub password_hash: String,
pub password_updated_at: Option<DateTimeUtc>,
#[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<String>,
pub endtime_forbid_login_at: Option<DateTimeUtc>,
pub last_login_at: Option<DateTimeUtc>,
#[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<DateTimeUtc>,
/// 删除请求时间;宽限期内账号仍可用,可取消;到期后才写 deleted_at。
pub deletion_requested_at: Option<DateTimeUtc>,
#[sea_orm(has_many)]
pub ssh_keys: HasMany<super::user_ssh_keys::Entity>,
#[sea_orm(has_many)]
pub events: HasMany<super::user_events::Entity>,
#[sea_orm(has_many)]
pub mfa: HasMany<super::user_mfa::Entity>,
#[sea_orm(has_many)]
pub sessions: HasMany<super::user_sessions::Entity>,
#[sea_orm(has_many)]
pub verification_tokens: HasMany<super::user_verification_tokens::Entity>,
#[sea_orm(has_many)]
pub mfa_backup_codes: HasMany<super::user_mfa_backup_codes::Entity>,
}
#[async_trait::async_trait]
impl ActiveModelBehavior for ActiveModel {
async fn before_save<C>(mut self, _db: &C, _insert: bool) -> Result<Self, DbErr>
where
C: ConnectionTrait,
{
self.updated_at = Set(chrono::Utc::now());
Ok(self)
}
}