use std::collections::HashMap;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct FileUploadRequest {
pub collection_name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub chunk_size: Option<u32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub chunk_overlap: Option<u32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub metadata: Option<HashMap<String, serde_json::Value>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub public_key: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct FileUploadResponse {
pub success: bool,
pub filename: String,
pub collection_name: String,
pub chunks_created: u32,
pub vectors_created: u32,
pub file_size: u64,
pub language: String,
pub processing_time_ms: u64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct FileUploadConfig {
pub max_file_size: u64,
pub max_file_size_mb: u32,
pub allowed_extensions: Vec<String>,
pub reject_binary: bool,
pub default_chunk_size: u32,
pub default_chunk_overlap: u32,
}
#[derive(Debug, Clone, Default)]
pub struct UploadFileOptions {
pub chunk_size: Option<u32>,
pub chunk_overlap: Option<u32>,
pub metadata: Option<HashMap<String, serde_json::Value>>,
pub public_key: Option<String>,
}