vectorizer_sdk/models/
file_upload.rs

1//! File upload models for the Vectorizer SDK
2
3use std::collections::HashMap;
4
5use serde::{Deserialize, Serialize};
6
7/// Request to upload a file for indexing
8#[derive(Debug, Clone, Serialize, Deserialize)]
9pub struct FileUploadRequest {
10    /// Target collection name
11    pub collection_name: String,
12    /// Chunk size in characters (uses server default if not specified)
13    #[serde(skip_serializing_if = "Option::is_none")]
14    pub chunk_size: Option<u32>,
15    /// Chunk overlap in characters (uses server default if not specified)
16    #[serde(skip_serializing_if = "Option::is_none")]
17    pub chunk_overlap: Option<u32>,
18    /// Additional metadata to attach to all chunks
19    #[serde(skip_serializing_if = "Option::is_none")]
20    pub metadata: Option<HashMap<String, serde_json::Value>>,
21    /// Optional ECC public key for payload encryption (PEM, base64, or hex format)
22    #[serde(skip_serializing_if = "Option::is_none")]
23    pub public_key: Option<String>,
24}
25
26/// Response from file upload operation
27#[derive(Debug, Clone, Serialize, Deserialize)]
28pub struct FileUploadResponse {
29    /// Whether the upload was successful
30    pub success: bool,
31    /// Original filename
32    pub filename: String,
33    /// Target collection
34    pub collection_name: String,
35    /// Number of chunks created from the file
36    pub chunks_created: u32,
37    /// Number of vectors created and stored
38    pub vectors_created: u32,
39    /// File size in bytes
40    pub file_size: u64,
41    /// Detected language/file type
42    pub language: String,
43    /// Processing time in milliseconds
44    pub processing_time_ms: u64,
45}
46
47/// Configuration for file uploads
48#[derive(Debug, Clone, Serialize, Deserialize)]
49pub struct FileUploadConfig {
50    /// Maximum file size in bytes
51    pub max_file_size: u64,
52    /// Maximum file size in megabytes
53    pub max_file_size_mb: u32,
54    /// List of allowed file extensions
55    pub allowed_extensions: Vec<String>,
56    /// Whether binary files are rejected
57    pub reject_binary: bool,
58    /// Default chunk size in characters
59    pub default_chunk_size: u32,
60    /// Default chunk overlap in characters
61    pub default_chunk_overlap: u32,
62}
63
64/// Options for uploading a file
65#[derive(Debug, Clone, Default)]
66pub struct UploadFileOptions {
67    /// Chunk size in characters
68    pub chunk_size: Option<u32>,
69    /// Chunk overlap in characters
70    pub chunk_overlap: Option<u32>,
71    /// Additional metadata to attach to all chunks
72    pub metadata: Option<HashMap<String, serde_json::Value>>,
73    /// Optional ECC public key for payload encryption (PEM, base64, or hex format)
74    pub public_key: Option<String>,
75}