sociallib/dto/
audio_response.rs1use chrono::naive::serde::ts_milliseconds;
2use chrono::NaiveDateTime;
3use common::enums::status::Status;
4use common::entity::DtoResp;
5use serde::{Deserialize, Serialize};
6use uuid::Uuid;
7
8use crate::dto::comment_response::CommentResponse;
9
10#[derive(Serialize, Deserialize, Debug, Clone)]
11#[serde(rename_all = "camelCase")]
12pub struct AudioResponse {
13 pub id: Uuid,
14 pub path: String,
15 #[serde(skip_serializing_if = "Option::is_none")]
16 pub title: Option<String>,
17 #[serde(skip_serializing_if = "Option::is_none")]
18 pub author: Option<String>,
19 #[serde(skip_serializing_if = "Option::is_none")]
20 pub transcript: Option<String>,
21 pub owner: Uuid,
22 #[serde(skip_serializing_if = "Option::is_none")]
23 pub status: Option<Status>,
24 #[serde(skip_serializing_if = "Option::is_none")]
25 pub access: Option<String>,
26 #[serde(skip_serializing_if = "Option::is_none")]
27 pub likes: Option<Vec<Uuid>>,
28 pub comments: Vec<CommentResponse>,
29 #[serde(skip_serializing_if = "Option::is_none")]
30 pub cover: Option<String>,
31 #[serde(with = "ts_milliseconds")]
32 pub date: NaiveDateTime,
33 pub commentable: bool,
34}
35
36impl DtoResp for AudioResponse {}