use serde::Serialize;
use utoipa::{ToResponse, ToSchema};
#[derive(Debug, Serialize, ToSchema, ToResponse)]
pub struct FileUploadResponse {
pub success: bool,
pub path: String,
pub uuid: String,
pub full_path: String,
}
#[derive(Debug, Serialize, ToSchema, ToResponse)]
pub struct FileListResponse {
pub files: Vec<FileInfo>,
}
#[derive(Debug, Clone, Copy, Serialize, ToSchema)]
#[serde(rename_all = "snake_case")]
pub enum FileEntryType {
Directory,
File,
VersionedFile,
}
#[derive(Debug, Serialize, ToSchema)]
pub struct FileInfo {
pub name: String,
pub size: u64,
#[serde(rename = "type")]
pub entry_type: FileEntryType,
pub created: Option<u64>,
pub modified: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub versions: Option<Vec<FileVersion>>,
}
#[derive(Debug, Serialize, ToSchema)]
pub struct FileVersion {
pub uuid: String,
pub size: u64,
pub created: Option<u64>,
}