longbridge/content/
types.rs

1use serde::{Deserialize, Serialize};
2use time::OffsetDateTime;
3
4use crate::serde_utils;
5
6/// Topic item
7#[derive(Debug, Clone, Serialize, Deserialize)]
8pub struct TopicItem {
9    /// Topic ID
10    pub id: String,
11    /// Title
12    #[serde(default)]
13    pub title: String,
14    /// Description
15    #[serde(default)]
16    pub description: String,
17    /// URL
18    pub url: String,
19    /// Published time
20    #[serde(
21        serialize_with = "time::serde::rfc3339::serialize",
22        deserialize_with = "serde_utils::timestamp::deserialize"
23    )]
24    pub published_at: OffsetDateTime,
25    /// Comments count
26    pub comments_count: i32,
27    /// Likes count
28    pub likes_count: i32,
29    /// Shares count
30    pub shares_count: i32,
31}
32
33/// News item
34#[derive(Debug, Clone, Serialize, Deserialize)]
35pub struct NewsItem {
36    /// News ID
37    pub id: String,
38    /// Title
39    #[serde(default)]
40    pub title: String,
41    /// Description
42    #[serde(default)]
43    pub description: String,
44    /// URL
45    pub url: String,
46    /// Published time
47    #[serde(
48        serialize_with = "time::serde::rfc3339::serialize",
49        deserialize_with = "serde_utils::timestamp::deserialize"
50    )]
51    pub published_at: OffsetDateTime,
52    /// Comments count
53    pub comments_count: i32,
54    /// Likes count
55    pub likes_count: i32,
56    /// Shares count
57    pub shares_count: i32,
58}