//! `SeaORM` Entity. Generated by sea-orm-codegen 0.10.3 use sea_orm::entity::prelude::*; use serde::{Deserialize, Serialize}; use crate::domain::types::{JpegPhoto, UserId, Uuid}; #[derive(Copy, Clone, Default, Debug, DeriveEntity)] pub struct Entity; #[derive(Clone, Debug, PartialEq, DeriveModel, Eq, Serialize, Deserialize, DeriveActiveModel)] #[sea_orm(table_name = "users")] pub struct Model { #[sea_orm(primary_key, auto_increment = false)] pub user_id: UserId, pub email: String, pub display_name: Option, pub first_name: Option, pub last_name: Option, pub avatar: Option, pub creation_date: chrono::DateTime, pub password_hash: Option>, pub totp_secret: Option, pub mfa_type: Option, pub uuid: Uuid, } impl EntityName for Entity { fn table_name(&self) -> &str { "users" } } #[derive(Copy, Clone, Debug, EnumIter, DeriveColumn, PartialEq, Eq, Serialize, Deserialize)] pub enum Column { UserId, Email, DisplayName, FirstName, LastName, Avatar, CreationDate, PasswordHash, TotpSecret, MfaType, Uuid, } impl ColumnTrait for Column { type EntityName = Entity; fn def(&self) -> ColumnDef { match self { Column::UserId => ColumnType::String(Some(255)), Column::Email => ColumnType::String(Some(255)), Column::DisplayName => ColumnType::String(Some(255)), Column::FirstName => ColumnType::String(Some(255)), Column::LastName => ColumnType::String(Some(255)), Column::Avatar => ColumnType::Binary, Column::CreationDate => ColumnType::DateTime, Column::PasswordHash => ColumnType::Binary, Column::TotpSecret => ColumnType::String(Some(64)), Column::MfaType => ColumnType::String(Some(64)), Column::Uuid => ColumnType::String(Some(36)), } .def() } } #[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] pub enum Relation { #[sea_orm(has_many = "super::memberships::Entity")] Memberships, #[sea_orm(has_many = "super::jwt_refresh_storage::Entity")] JwtRefreshStorage, #[sea_orm(has_many = "super::jwt_storage::Entity")] JwtStorage, #[sea_orm(has_many = "super::password_reset_tokens::Entity")] PasswordResetTokens, } #[derive(Copy, Clone, Debug, EnumIter, DerivePrimaryKey)] pub enum PrimaryKey { UserId, } impl PrimaryKeyTrait for PrimaryKey { type ValueType = UserId; fn auto_increment() -> bool { false } } impl Related for Entity { fn to() -> RelationDef { Relation::Memberships.def() } } impl Related for Entity { fn to() -> RelationDef { Relation::JwtRefreshStorage.def() } } impl Related for Entity { fn to() -> RelationDef { Relation::JwtStorage.def() } } impl Related for Entity { fn to() -> RelationDef { Relation::PasswordResetTokens.def() } } impl ActiveModelBehavior for ActiveModel {} impl From for crate::domain::types::User { fn from(user: Model) -> Self { Self { user_id: user.user_id, email: user.email, display_name: user.display_name, first_name: user.first_name, last_name: user.last_name, creation_date: user.creation_date, uuid: user.uuid, avatar: user.avatar, } } }