mistral-openapi-client 0.1.0

Our Chat Completion and Embeddings APIs specification. Create your account on [La Plateforme](https://console.mistral.ai) to get access and read the [docs](https://docs.mistral.ai) to learn how to use it.
Documentation
/*
 * Mistral AI API
 *
 * Our Chat Completion and Embeddings APIs specification. Create your account on [La Plateforme](https://console.mistral.ai) to get access and read the [docs](https://docs.mistral.ai) to learn how to use it.
 *
 * The version of the OpenAPI document: 1.0.0
 * 
 * Generated by: https://openapi-generator.tech
 */

use crate::models;
use serde::{Deserialize, Serialize};

#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct DocumentOut {
    #[serde(rename = "id")]
    pub id: uuid::Uuid,
    #[serde(rename = "library_id")]
    pub library_id: uuid::Uuid,
    #[serde(rename = "hash", deserialize_with = "Option::deserialize")]
    pub hash: Option<String>,
    #[serde(rename = "mime_type", deserialize_with = "Option::deserialize")]
    pub mime_type: Option<String>,
    #[serde(rename = "extension", deserialize_with = "Option::deserialize")]
    pub extension: Option<String>,
    #[serde(rename = "size", deserialize_with = "Option::deserialize")]
    pub size: Option<i32>,
    #[serde(rename = "name")]
    pub name: String,
    #[serde(rename = "summary", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
    pub summary: Option<Option<String>>,
    #[serde(rename = "created_at")]
    pub created_at: String,
    #[serde(rename = "last_processed_at", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
    pub last_processed_at: Option<Option<String>>,
    #[serde(rename = "number_of_pages", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
    pub number_of_pages: Option<Option<i32>>,
    #[serde(rename = "process_status")]
    pub process_status: models::ProcessStatus,
    #[serde(rename = "uploaded_by_id", deserialize_with = "Option::deserialize")]
    pub uploaded_by_id: Option<uuid::Uuid>,
    #[serde(rename = "uploaded_by_type")]
    pub uploaded_by_type: String,
    #[serde(rename = "tokens_processing_main_content", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
    pub tokens_processing_main_content: Option<Option<i32>>,
    #[serde(rename = "tokens_processing_summary", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
    pub tokens_processing_summary: Option<Option<i32>>,
    #[serde(rename = "url", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
    pub url: Option<Option<String>>,
    #[serde(rename = "attributes", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
    pub attributes: Option<Option<std::collections::HashMap<String, serde_json::Value>>>,
    #[serde(rename = "processing_status")]
    pub processing_status: String,
    #[serde(rename = "tokens_processing_total")]
    pub tokens_processing_total: i32,
}

impl DocumentOut {
    pub fn new(id: uuid::Uuid, library_id: uuid::Uuid, hash: Option<String>, mime_type: Option<String>, extension: Option<String>, size: Option<i32>, name: String, created_at: String, process_status: models::ProcessStatus, uploaded_by_id: Option<uuid::Uuid>, uploaded_by_type: String, processing_status: String, tokens_processing_total: i32) -> DocumentOut {
        DocumentOut {
            id,
            library_id,
            hash,
            mime_type,
            extension,
            size,
            name,
            summary: None,
            created_at,
            last_processed_at: None,
            number_of_pages: None,
            process_status,
            uploaded_by_id,
            uploaded_by_type,
            tokens_processing_main_content: None,
            tokens_processing_summary: None,
            url: None,
            attributes: None,
            processing_status,
            tokens_processing_total,
        }
    }
}