forumlib/dto/
question_response.rsuse chrono::naive::serde::ts_milliseconds;
use chrono::NaiveDateTime;
use serde::{Deserialize, Serialize};
use uuid::Uuid;
use common::utils::serialize_option_naive_date;
use crate::enums::question_status::QuestionStatus;
use crate::jsonb::answer::Answer;
use crate::jsonb::comment::Comment;
#[derive(Serialize, Deserialize, Debug, Clone)]
#[serde(rename_all = "camelCase")]
pub struct QuestionResponse {
pub id: Uuid,
#[serde(skip_serializing_if = "Option::is_none")]
pub ver: Option<i32>,
pub description: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub author: Option<Uuid>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tags: Option<Vec<String>>,
#[serde(with = "ts_milliseconds")]
pub created: NaiveDateTime,
pub likes: Option<Vec<Uuid>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub answers: Option<Vec<Answer>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub comments: Option<Vec<Comment>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub watchers: Option<Vec<Uuid>>,
pub status : QuestionStatus,
#[serde(skip_serializing_if = "Option::is_none")]
pub dislikes: Option<Vec<Uuid>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default)]
#[serde(with = "serialize_option_naive_date")]
pub updated: Option<NaiveDateTime>,
#[serde(skip_serializing_if = "Option::is_none")]
pub roles: Option<Vec<String>>,
pub title : String,
#[serde(skip_serializing_if = "Option::is_none")]
pub organization: Option<Uuid>,
pub anonymous: bool,
}