sociallib/dto/
post_response.rs

1use chrono::NaiveDateTime;
2use common::utils::serialize_option_naive_date;
3use serde::{Deserialize, Serialize};
4use uuid::Uuid;
5use common::entity::DtoResp;
6
7use crate::dto::comment_response::CommentResponse;
8
9#[derive(Serialize, Deserialize, Debug, Clone)]
10#[serde(rename_all = "camelCase")]
11pub struct PostResponse {
12    pub id: Uuid,
13    #[serde(skip_serializing_if = "Option::is_none")]
14    pub author: Option<Uuid>,
15    #[serde(skip_serializing_if = "Option::is_none")]
16    pub title: Option<String>,
17    pub text: String,
18    pub commentable: bool,
19    pub blog: Uuid,
20    #[serde(skip_serializing_if = "Option::is_none")]
21    pub likes: Option<Vec<Uuid>>,
22    #[serde(skip_serializing_if = "Option::is_none")]
23    pub repost: Option<Uuid>,
24    pub comments: Vec<CommentResponse>,
25    #[serde(default)]
26    #[serde(with = "serialize_option_naive_date")]
27    #[serde(skip_serializing_if = "Option::is_none")]
28    pub cdt: Option<NaiveDateTime>,
29    pub shares: i32,
30}
31
32impl DtoResp for PostResponse {}