feat: init
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
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<String>,
|
||||
pub body: String,
|
||||
pub cover_image_url: Option<String>,
|
||||
pub status: ArticleStatus,
|
||||
pub visibility: Visibility,
|
||||
pub tags: Vec<String>,
|
||||
pub published_at: Option<DateTime<Utc>>,
|
||||
pub published_by: Option<Uuid>,
|
||||
pub scheduled_at: Option<DateTime<Utc>>,
|
||||
pub unpublished_at: Option<DateTime<Utc>>,
|
||||
pub views_count: i64,
|
||||
pub comments_count: i64,
|
||||
pub reactions_count: i64,
|
||||
pub cross_posted: bool,
|
||||
pub cross_posted_from: Option<Uuid>,
|
||||
pub metadata: Option<JsonValue>,
|
||||
pub created_at: DateTime<Utc>,
|
||||
pub updated_at: DateTime<Utc>,
|
||||
pub deleted_at: Option<DateTime<Utc>>,
|
||||
}
|
||||
Reference in New Issue
Block a user