use crate::value_objects::{Email, PasswordHash, UserId, Username}; use chrono::{DateTime, Utc}; #[derive(Debug, Default, Clone)] pub struct UpdateProfileInput { pub display_name: Option, pub bio: Option, pub avatar_url: Option, pub header_url: Option, pub custom_css: Option, pub profile_fields: Option>, } #[derive(Debug, Clone)] pub struct User { pub id: UserId, pub username: Username, pub email: Email, pub password_hash: PasswordHash, pub display_name: Option, pub bio: Option, pub avatar_url: Option, pub header_url: Option, pub custom_css: Option, pub profile_fields: Vec<(String, String)>, pub local: bool, pub created_at: DateTime, pub updated_at: DateTime, } 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, profile_fields: vec![], local: true, created_at: now, updated_at: now, } } }