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,
}
}
}