//! User domain types. use chrono::{DateTime, Utc}; use serde::{Deserialize, Serialize}; use crate::id_types::UserId; // ============ User ============ /// A registered user account. #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct User { /// Unique identifier. pub id: UserId, /// Email address (used for login). pub email: String, /// Argon2 password hash (never serialized). #[serde(skip_serializing)] pub password_hash: String, /// Display name. pub display_name: String, /// Account creation timestamp. pub created_at: DateTime, /// Last successful login. pub last_login_at: Option>, }