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}
22
23/// Response from file upload operation
24#[derive(Debug, Clone, Serialize, Deserialize)]
25pub struct FileUploadResponse {
26    /// Whether the upload was successful
27    pub success: bool,
28    /// Original filename
29    pub filename: String,
30    /// Target collection
31    pub collection_name: String,
32    /// Number of chunks created from the file
33    pub chunks_created: u32,
34    /// Number of vectors created and stored
35    pub vectors_created: u32,
36    /// File size in bytes
37    pub file_size: u64,
38    /// Detected language/file type
39    pub language: String,
40    /// Processing time in milliseconds
41    pub processing_time_ms: u64,
42}
43
44/// Configuration for file uploads
45#[derive(Debug, Clone, Serialize, Deserialize)]
46pub struct FileUploadConfig {
47    /// Maximum file size in bytes
48    pub max_file_size: u64,
49    /// Maximum file size in megabytes
50    pub max_file_size_mb: u32,
51    /// List of allowed file extensions
52    pub allowed_extensions: Vec<String>,
53    /// Whether binary files are rejected
54    pub reject_binary: bool,
55    /// Default chunk size in characters
56    pub default_chunk_size: u32,
57    /// Default chunk overlap in characters
58    pub default_chunk_overlap: u32,
59}
60
61/// Options for uploading a file
62#[derive(Debug, Clone, Default)]
63pub struct UploadFileOptions {
64    /// Chunk size in characters
65    pub chunk_size: Option<u32>,
66    /// Chunk overlap in characters
67    pub chunk_overlap: Option<u32>,
68    /// Additional metadata to attach to all chunks
69    pub metadata: Option<HashMap<String, serde_json::Value>>,
70}