use crate::serde_helpers::double_option;
use super::*;
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct FileRequest {
pub id: String,
pub r#type: FileRequestType,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub description: Option<Option<String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub status: Option<FileRequestStatus>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub is_email_required: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub is_description_required: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub expires_at: Option<chrono::DateTime<chrono::Utc>>,
pub folder: FolderMini,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub url: Option<String>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub etag: Option<Option<String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub created_by: Option<UserMini>,
pub created_at: chrono::DateTime<chrono::Utc>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub updated_by: Option<UserMini>,
pub updated_at: chrono::DateTime<chrono::Utc>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct FileRequestCopyRequest {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub status: Option<FileRequestStatus>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub is_email_required: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub is_description_required: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub expires_at: Option<chrono::DateTime<chrono::Utc>>,
pub folder: FileRequestCopyRequestFolder,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct FileRequestUpdateRequest {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub status: Option<FileRequestStatus>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub is_email_required: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub is_description_required: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub expires_at: Option<chrono::DateTime<chrono::Utc>>,
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct FileRequestType(pub String);
impl FileRequestType {
pub const FILE_REQUEST: &'static str = "file_request";
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct FileRequestStatus(pub String);
impl FileRequestStatus {
pub const ACTIVE: &'static str = "active";
pub const INACTIVE: &'static str = "inactive";
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct FileRequestCopyRequestFolder {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub r#type: Option<FolderType>,
pub id: String,
}