use chrono::{DateTime, Utc}; use serde::{Deserialize, Serialize}; use sqlx::FromRow; use uuid::Uuid; #[derive(Debug, Clone, PartialEq, Serialize, Deserialize, FromRow)] pub struct ChannelArticleModel { pub id: Uuid, pub channel: Uuid, pub author: Uuid, pub title: String, pub cover_url: Option, pub content: String, pub content_type: String, pub summary: Option, #[serde(default)] pub tags: Vec, pub is_pinned: bool, pub view_count: i64, pub like_count: i64, pub comment_count: i64, pub status: String, pub created_at: DateTime, pub updated_at: DateTime, pub deleted_at: Option>, } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct CreateArticlePayload { pub channel: Uuid, pub title: String, pub cover_url: Option, pub content: String, pub content_type: Option, pub summary: Option, pub tags: Option>, pub status: Option, } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct UpdateArticlePayload { pub title: Option, pub cover_url: Option, pub content: Option, pub content_type: Option, pub summary: Option, pub tags: Option>, pub is_pinned: Option, pub status: Option, } #[derive(Debug, Clone, Serialize, Deserialize, FromRow)] pub struct ChannelArticleCard { pub id: Uuid, pub channel: Uuid, pub author: Uuid, pub title: String, pub cover_url: Option, pub summary: Option, pub tags: Vec, pub like_count: i64, pub comment_count: i64, pub view_count: i64, pub created_at: DateTime, }