use crate::models::common::{ArticleStatus, JsonValue, Visibility}; use chrono::{DateTime, Utc}; use serde::{Deserialize, Serialize}; use uuid::Uuid; /// Long-form article for announcement/news channels. /// Unlike a plain Message, an article has a title, cover image, /// publish lifecycle, and can be cross-posted to followers. #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, sqlx::FromRow)] pub struct Article { pub id: Uuid, pub channel_id: Uuid, pub author_id: Uuid, pub title: String, pub slug: String, pub summary: Option, pub body: String, pub cover_image_url: Option, pub status: ArticleStatus, pub visibility: Visibility, pub tags: Vec, pub published_at: Option>, pub published_by: Option, pub scheduled_at: Option>, pub unpublished_at: Option>, pub views_count: i64, pub comments_count: i64, pub reactions_count: i64, pub cross_posted: bool, pub cross_posted_from: Option, pub metadata: Option, pub created_at: DateTime, pub updated_at: DateTime, pub deleted_at: Option>, }