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 ProjectDetail {
    #[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")]
    pub description: String,
    #[serde(rename = "type")]
    pub r#type: 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")]
    pub tournament_close_date: String,
    #[serde(rename = "tournament_start_date")]
    pub tournament_start_date: 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")]
    pub in_main_feed_by_default: bool,
    #[serde(rename = "public")]
    pub public: bool,
    #[serde(rename = "is_opt_in")]
    pub is_opt_in: bool,
    #[serde(rename = "user_permissions", deserialize_with = "Option::deserialize")]
    pub user_permissions: Option<serde_json::Value>,
    #[serde(rename = "essay_count")]
    pub essay_count: i32,
    #[serde(rename = "completion_question_count")]
    pub completion_question_count: i32,
    #[serde(rename = "organizations")]
    pub organizations: Vec<crate::models::Organization>,
    #[serde(rename = "header_logo")]
    pub header_logo: String,
    #[serde(rename = "header_image")]
    pub header_image: String,
    #[serde(
        rename = "default_project_permissions",
        deserialize_with = "Option::deserialize"
    )]
    pub default_project_permissions: Option<serde_json::Value>,
    #[serde(
        rename = "default_question_permissions",
        deserialize_with = "Option::deserialize"
    )]
    pub default_question_permissions: Option<serde_json::Value>,
    #[serde(rename = "default_role", deserialize_with = "Option::deserialize")]
    pub default_role: Option<serde_json::Value>,
}

impl ProjectDetail {
    #[must_use]
    pub fn new(
        id: i32,
        name: String,
        url: String,
        type_str: String,
        score_type: crate::models::ScoreTypeEnum,
        subtitle: String,
        description: String,
        r#type: 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>,
        tournament_close_date: String,
        tournament_start_date: String,
        prize_pool: f64,
        config: ::std::collections::HashMap<String, serde_json::Value>,
        in_main_feed_by_default: bool,
        public: bool,
        is_opt_in: bool,
        user_permissions: Option<serde_json::Value>,
        essay_count: i32,
        completion_question_count: i32,
        organizations: Vec<crate::models::Organization>,
        header_logo: String,
        header_image: String,
        default_project_permissions: Option<serde_json::Value>,
        default_question_permissions: Option<serde_json::Value>,
        default_role: Option<serde_json::Value>,
    ) -> ProjectDetail {
        ProjectDetail {
            id,
            name,
            url,
            type_str,
            score_type,
            subtitle,
            description,
            r#type,
            site_id,
            user_perms,
            question_user_perms,
            sign_up_fields,
            tournament_close_date,
            tournament_start_date,
            prize_pool,
            config,
            in_main_feed_by_default,
            public,
            is_opt_in,
            user_permissions,
            essay_count,
            completion_question_count,
            organizations,
            header_logo,
            header_image,
            default_project_permissions,
            default_question_permissions,
            default_role,
        }
    }
}