feat(domain): models
This commit is contained in:
35
crates/domain/src/models/user.rs
Normal file
35
crates/domain/src/models/user.rs
Normal file
@@ -0,0 +1,35 @@
|
||||
use chrono::{DateTime, Utc};
|
||||
use crate::value_objects::{UserId, Username, Email, PasswordHash};
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct User {
|
||||
pub id: UserId,
|
||||
pub username: Username,
|
||||
pub email: Email,
|
||||
pub password_hash: PasswordHash,
|
||||
pub display_name: Option<String>,
|
||||
pub bio: Option<String>,
|
||||
pub avatar_url: Option<String>,
|
||||
pub header_url: Option<String>,
|
||||
pub custom_css: Option<String>,
|
||||
pub local: bool,
|
||||
pub ap_id: Option<String>,
|
||||
pub inbox_url: Option<String>,
|
||||
pub public_key: Option<String>,
|
||||
pub private_key: Option<String>,
|
||||
pub created_at: DateTime<Utc>,
|
||||
pub updated_at: DateTime<Utc>,
|
||||
}
|
||||
|
||||
impl User {
|
||||
pub fn new_local(id: UserId, username: Username, email: Email, password_hash: PasswordHash) -> Self {
|
||||
let now = Utc::now();
|
||||
Self {
|
||||
id, username, email, password_hash,
|
||||
display_name: None, bio: None, avatar_url: None, header_url: None,
|
||||
custom_css: None, local: true, ap_id: None, inbox_url: None,
|
||||
public_key: None, private_key: None,
|
||||
created_at: now, updated_at: now,
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user