post_archiver/
post.rs

1use std::hash::Hash;
2
3use chrono::{DateTime, Utc};
4use serde::{Deserialize, Serialize};
5#[cfg(feature = "typescript")]
6use ts_rs::TS;
7
8use crate::{
9    comment::Comment,
10    id::{FileMetaId, PostId},
11    Content, PlatformId,
12};
13
14/// A content entry
15#[cfg_attr(feature = "typescript", derive(TS))]
16#[cfg_attr(feature = "typescript", ts(export))]
17#[derive(Deserialize, Serialize, Debug, Clone, PartialEq, Eq, Hash)]
18pub struct Post {
19    pub id: PostId,
20    pub source: Option<String>,
21    pub title: String,
22    pub content: Vec<Content>,
23    pub thumb: Option<FileMetaId>,
24    pub comments: Vec<Comment>,
25    pub updated: DateTime<Utc>,
26    pub published: DateTime<Utc>,
27    pub platform: Option<PlatformId>,
28}
29
30#[cfg(feature = "utils")]
31crate::utils::macros::as_table! {
32    Post {
33        id: "id",
34        source: "source",
35        title: "title",
36        content: "content" => json,
37        thumb: "thumb",
38        comments: "comments" => json,
39        updated: "updated",
40        published: "published",
41        platform: "platform",
42    }
43}