use chrono::{DateTime, Utc};
use reinhardt_db::orm::Model;
use reinhardt_macros::user;
use serde::{Deserialize, Serialize};
use uuid::Uuid;
#[user(hasher = reinhardt_auth::Argon2Hasher, username_field = "username", full = true, manager = false)]
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AdminDefaultUser {
pub id: Uuid,
pub username: String,
pub email: String,
pub first_name: String,
pub last_name: String,
pub password_hash: Option<String>,
pub last_login: Option<DateTime<Utc>>,
pub is_active: bool,
pub is_staff: bool,
pub is_superuser: bool,
pub date_joined: DateTime<Utc>,
#[serde(deserialize_with = "super::serde_helpers::string_or_vec", default)]
pub user_permissions: Vec<String>,
#[serde(deserialize_with = "super::serde_helpers::string_or_vec", default)]
pub groups: Vec<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AdminDefaultUserFields {
_private: (),
}
impl AdminDefaultUserFields {
fn new() -> Self {
Self { _private: () }
}
}
impl reinhardt_db::orm::FieldSelector for AdminDefaultUserFields {
fn with_alias(self, _alias: &str) -> Self {
self
}
}
impl Model for AdminDefaultUser {
type PrimaryKey = Uuid;
type Fields = AdminDefaultUserFields;
fn table_name() -> &'static str {
"auth_user"
}
fn new_fields() -> Self::Fields {
AdminDefaultUserFields::new()
}
fn primary_key(&self) -> Option<Self::PrimaryKey> {
Some(self.id)
}
fn set_primary_key(&mut self, value: Self::PrimaryKey) {
self.id = value;
}
fn primary_key_field() -> &'static str {
"id"
}
}