use common::DateTimeWithTimeZoneWrapper; use serde::Serialize; use utoipa::ToSchema; use crate::domains::user; #[derive(Serialize, ToSchema)] pub struct UserSchema { pub id: i32, pub username: String, pub display_name: Option, pub bio: Option, pub avatar_url: Option, pub header_url: Option, pub custom_css: Option, // In a real implementation, you'd fetch and return this data. // For now, we'll omit it from the schema to keep it simple. // pub top_friends: Vec, pub joined_at: DateTimeWithTimeZoneWrapper, } impl From for UserSchema { fn from(user: user::Model) -> Self { Self { id: user.id, username: user.username, display_name: user.display_name, bio: user.bio, avatar_url: user.avatar_url, header_url: user.header_url, custom_css: user.custom_css, joined_at: user.created_at.into(), } } } #[derive(Serialize, ToSchema)] pub struct UserListSchema { pub users: Vec, } impl From> for UserListSchema { fn from(users: Vec) -> Self { Self { users: users.into_iter().map(UserSchema::from).collect(), } } }