metaculus 0.4.0

API Client for Metaculus
Documentation
/*
 * Metaculus API
 *
 * Welcome to the unofficial Rust client for the Metaculus API
 *
 * The version of the OpenAPI document: 1.0
 * Contact: Benjamin Manns <opensource@benmanns.com>
 * Generated by: https://openapi-generator.tech
 */

#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct ProjectUpdate {
    #[serde(rename = "id")]
    pub id: i32,
    #[serde(rename = "name")]
    pub name: String,
    #[serde(rename = "url")]
    pub url: String,
    #[serde(rename = "type_str")]
    pub type_str: String,
    #[serde(rename = "score_type")]
    pub score_type: crate::models::ScoreTypeEnum,
    #[serde(rename = "subtitle")]
    pub subtitle: String,
    #[serde(rename = "description", skip_serializing_if = "Option::is_none")]
    pub description: Option<String>,
    #[serde(rename = "type", skip_serializing_if = "Option::is_none")]
    pub r#type: Option<String>,
    #[serde(rename = "site_id")]
    pub site_id: i32,
    #[serde(rename = "user_perms", deserialize_with = "Option::deserialize")]
    pub user_perms: Option<serde_json::Value>,
    #[serde(
        rename = "question_user_perms",
        deserialize_with = "Option::deserialize"
    )]
    pub question_user_perms: Option<serde_json::Value>,
    #[serde(rename = "sign_up_fields")]
    pub sign_up_fields: ::std::collections::HashMap<String, serde_json::Value>,
    #[serde(
        rename = "tournament_close_date",
        skip_serializing_if = "Option::is_none"
    )]
    pub tournament_close_date: Option<String>,
    #[serde(
        rename = "tournament_start_date",
        skip_serializing_if = "Option::is_none"
    )]
    pub tournament_start_date: Option<String>,
    #[serde(rename = "prize_pool")]
    pub prize_pool: f64,
    #[serde(rename = "config")]
    pub config: ::std::collections::HashMap<String, serde_json::Value>,
    #[serde(
        rename = "in_main_feed_by_default",
        skip_serializing_if = "Option::is_none"
    )]
    pub in_main_feed_by_default: Option<bool>,
    #[serde(rename = "public", skip_serializing_if = "Option::is_none")]
    pub public: Option<bool>,
    #[serde(rename = "is_opt_in")]
    pub is_opt_in: bool,
    #[serde(rename = "organizations", skip_serializing_if = "Option::is_none")]
    pub organizations: Option<Vec<crate::models::ProjectOrganization>>,
}

impl ProjectUpdate {
    #[must_use]
    pub fn new(
        id: i32,
        name: String,
        url: String,
        type_str: String,
        score_type: crate::models::ScoreTypeEnum,
        subtitle: String,
        site_id: i32,
        user_perms: Option<serde_json::Value>,
        question_user_perms: Option<serde_json::Value>,
        sign_up_fields: ::std::collections::HashMap<String, serde_json::Value>,
        prize_pool: f64,
        config: ::std::collections::HashMap<String, serde_json::Value>,
        is_opt_in: bool,
    ) -> ProjectUpdate {
        ProjectUpdate {
            id,
            name,
            url,
            type_str,
            score_type,
            subtitle,
            description: None,
            r#type: None,
            site_id,
            user_perms,
            question_user_perms,
            sign_up_fields,
            tournament_close_date: None,
            tournament_start_date: None,
            prize_pool,
            config,
            in_main_feed_by_default: None,
            public: None,
            is_opt_in,
            organizations: None,
        }
    }
}