//! Statistics Value Objects use crate::domain::entities::Post; /// Post engagement statistics #[derive(Debug, Clone, Copy, PartialEq)] pub struct PostStats { pub likes: i32, pub replies: i32, pub reposts: i32, pub quotes: i32, } impl PostStats { /// Create stats from a Post entity pub fn from_post(post: &Post) -> Self { Self { likes: post.like_count, replies: post.reply_count, reposts: post.repost_count, quotes: post.quote_count, } } /// Total engagement count pub fn total_engagement(&self) -> i32 { self.likes + self.replies + self.reposts + self.quotes } } /// Actor profile statistics #[derive(Debug, Clone, Copy, PartialEq)] pub struct ProfileStats { pub followers: i32, pub following: i32, pub posts: i32, pub lists: i32, } impl ProfileStats { /// Create empty stats pub fn empty() -> Self { Self { followers: 0, following: 0, posts: 0, lists: 0, } } }