sociallib/dto/
video_response.rs

1use 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 VideoResponse {
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 description: Option<String>,
19    #[serde(skip_serializing_if = "Option::is_none")]
20    pub lat: Option<f64>,
21    #[serde(skip_serializing_if = "Option::is_none")]
22    pub lng: Option<f64>,
23    pub owner: Uuid,
24    #[serde(skip_serializing_if = "Option::is_none")]
25    pub status: Option<Status>,
26    #[serde(skip_serializing_if = "Option::is_none")]
27    pub access: Option<String>,
28    pub commentable: bool,
29    #[serde(skip_serializing_if = "Option::is_none")]
30    pub likes: Option<Vec<Uuid>>,
31    pub comments: Vec<CommentResponse>,
32    #[serde(with = "ts_milliseconds")]
33    pub date: NaiveDateTime,
34}
35
36impl DtoResp for VideoResponse {}