#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct QuestionUpdate {
#[serde(rename = "active_state", deserialize_with = "Option::deserialize")]
pub active_state: Option<serde_json::Value>,
#[serde(rename = "url")]
pub url: String,
#[serde(rename = "page_url")]
pub page_url: String,
#[serde(rename = "id")]
pub id: i32,
#[serde(rename = "author")]
pub author: i32,
#[serde(rename = "author_name")]
pub author_name: String,
#[serde(rename = "title", skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
#[serde(rename = "title_short", skip_serializing_if = "Option::is_none")]
pub title_short: Option<String>,
#[serde(rename = "group_label", skip_serializing_if = "Option::is_none")]
pub group_label: Option<String>,
#[serde(rename = "status", skip_serializing_if = "Option::is_none")]
pub status: Option<crate::models::QuestionUpdateStatusEnum>,
#[serde(rename = "resolution", deserialize_with = "Option::deserialize")]
pub resolution: Option<f64>,
#[serde(rename = "created_time")]
pub created_time: String,
#[serde(rename = "publish_time", skip_serializing_if = "Option::is_none")]
pub publish_time: Option<String>,
#[serde(rename = "close_time", skip_serializing_if = "Option::is_none")]
pub close_time: Option<String>,
#[serde(rename = "effected_close_time")]
pub effected_close_time: String,
#[serde(rename = "resolve_time", skip_serializing_if = "Option::is_none")]
pub resolve_time: Option<String>,
#[serde(rename = "possibilities", skip_serializing_if = "Option::is_none")]
pub possibilities: Option<::std::collections::HashMap<String, serde_json::Value>>,
#[serde(rename = "scoring", skip_serializing_if = "Option::is_none")]
pub scoring: Option<::std::collections::HashMap<String, serde_json::Value>>,
#[serde(rename = "type", skip_serializing_if = "Option::is_none")]
pub r#type: Option<crate::models::QuestionTypes>,
#[serde(rename = "user_perms", deserialize_with = "Option::deserialize")]
pub user_perms: Option<serde_json::Value>,
#[serde(
rename = "weekly_movement",
default,
with = "::serde_with::rust::double_option",
skip_serializing_if = "Option::is_none"
)]
pub weekly_movement: Option<Option<f64>>,
#[serde(
rename = "weekly_movement_direction",
default,
with = "::serde_with::rust::double_option",
skip_serializing_if = "Option::is_none"
)]
pub weekly_movement_direction: Option<Option<i32>>,
#[serde(rename = "cp_reveal_time", skip_serializing_if = "Option::is_none")]
pub cp_reveal_time: Option<String>,
#[serde(rename = "edited_time")]
pub edited_time: String,
#[serde(rename = "categories", skip_serializing_if = "Option::is_none")]
pub categories: Option<Vec<String>>,
#[serde(rename = "description", skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(rename = "description_html", skip_serializing_if = "Option::is_none")]
pub description_html: Option<String>,
#[serde(
rename = "resolution_criteria",
skip_serializing_if = "Option::is_none"
)]
pub resolution_criteria: Option<String>,
#[serde(
rename = "resolution_criteria_html",
skip_serializing_if = "Option::is_none"
)]
pub resolution_criteria_html: Option<String>,
#[serde(rename = "fine_print", skip_serializing_if = "Option::is_none")]
pub fine_print: Option<String>,
#[serde(rename = "fine_print_html", skip_serializing_if = "Option::is_none")]
pub fine_print_html: Option<String>,
#[serde(rename = "prediction_count")]
pub prediction_count: i32,
#[serde(rename = "parent_question_id", skip_serializing_if = "Option::is_none")]
pub parent_question_id: Option<i32>,
#[serde(rename = "related_questions", skip_serializing_if = "Option::is_none")]
pub related_questions: Option<Vec<serde_json::Value>>,
#[serde(rename = "sub_questions", skip_serializing_if = "Option::is_none")]
pub sub_questions: Option<Vec<crate::models::SubQuestionUpdate>>,
#[serde(rename = "projects", deserialize_with = "Option::deserialize")]
pub projects: Option<serde_json::Value>,
#[serde(rename = "projects_input", skip_serializing_if = "Option::is_none")]
pub projects_input: Option<Vec<crate::models::QuestionProject>>,
#[serde(rename = "conditioned_on", skip_serializing_if = "Option::is_none")]
pub conditioned_on: Option<i32>,
#[serde(
rename = "unconditional_question",
skip_serializing_if = "Option::is_none"
)]
pub unconditional_question: Option<i32>,
#[serde(rename = "options", skip_serializing_if = "Option::is_none")]
pub options: Option<Vec<crate::models::Option>>,
}
impl QuestionUpdate {
#[must_use]
pub fn new(
active_state: Option<serde_json::Value>,
url: String,
page_url: String,
id: i32,
author: i32,
author_name: String,
resolution: Option<f64>,
created_time: String,
effected_close_time: String,
user_perms: Option<serde_json::Value>,
edited_time: String,
prediction_count: i32,
projects: Option<serde_json::Value>,
) -> QuestionUpdate {
QuestionUpdate {
active_state,
url,
page_url,
id,
author,
author_name,
title: None,
title_short: None,
group_label: None,
status: None,
resolution,
created_time,
publish_time: None,
close_time: None,
effected_close_time,
resolve_time: None,
possibilities: None,
scoring: None,
r#type: None,
user_perms,
weekly_movement: None,
weekly_movement_direction: None,
cp_reveal_time: None,
edited_time,
categories: None,
description: None,
description_html: None,
resolution_criteria: None,
resolution_criteria_html: None,
fine_print: None,
fine_print_html: None,
prediction_count,
parent_question_id: None,
related_questions: None,
sub_questions: None,
projects,
projects_input: None,
conditioned_on: None,
unconditional_question: None,
options: None,
}
}
}