Skip to main content

edgequake_sdk/types/
documents.rs

1//! Document-related types.
2
3use serde::{Deserialize, Serialize};
4
5use super::common::PaginationInfo;
6
7/// Response from uploading a document.
8#[derive(Debug, Clone, Deserialize, Serialize)]
9pub struct UploadDocumentResponse {
10    pub id: String,
11    #[serde(default)]
12    pub status: Option<String>,
13    #[serde(default)]
14    pub message: Option<String>,
15    #[serde(default)]
16    pub track_id: Option<String>,
17}
18
19/// Document summary in list responses.
20#[derive(Debug, Clone, Deserialize, Serialize)]
21pub struct DocumentSummary {
22    pub id: String,
23    #[serde(default)]
24    pub file_name: Option<String>,
25    #[serde(default)]
26    pub title: Option<String>,
27    #[serde(default)]
28    pub status: Option<String>,
29    #[serde(default)]
30    pub file_size: Option<u64>,
31    #[serde(default)]
32    pub mime_type: Option<String>,
33    #[serde(default)]
34    pub entity_count: Option<u32>,
35    #[serde(default)]
36    pub chunk_count: Option<u32>,
37    #[serde(default)]
38    pub created_at: Option<String>,
39    #[serde(default)]
40    pub updated_at: Option<String>,
41}
42
43/// Response from listing documents.
44#[derive(Debug, Clone, Deserialize, Serialize)]
45pub struct ListDocumentsResponse {
46    #[serde(default)]
47    pub documents: Vec<DocumentSummary>,
48    #[serde(default)]
49    pub pagination: Option<PaginationInfo>,
50}
51
52/// Response from tracking document processing status.
53#[derive(Debug, Clone, Deserialize, Serialize)]
54pub struct TrackStatusResponse {
55    pub track_id: String,
56    pub status: String,
57    #[serde(default)]
58    pub progress: Option<f64>,
59    #[serde(default)]
60    pub message: Option<String>,
61    #[serde(default)]
62    pub document_id: Option<String>,
63}
64
65/// Response from directory scanning.
66#[derive(Debug, Clone, Deserialize, Serialize)]
67pub struct ScanResponse {
68    #[serde(default)]
69    pub files_found: u32,
70    #[serde(default)]
71    pub files_queued: u32,
72    #[serde(default)]
73    pub files_skipped: u32,
74}
75
76/// Response from deletion impact analysis.
77#[derive(Debug, Clone, Deserialize, Serialize)]
78pub struct DeletionImpactResponse {
79    #[serde(default)]
80    pub entity_count: u32,
81    #[serde(default)]
82    pub relationship_count: u32,
83    #[serde(default)]
84    pub chunk_count: u32,
85}
86
87/// PDF upload response.
88#[derive(Debug, Clone, Deserialize, Serialize)]
89pub struct PdfUploadResponse {
90    pub id: String,
91    #[serde(default)]
92    pub status: Option<String>,
93    #[serde(default)]
94    pub track_id: Option<String>,
95}
96
97/// PDF progress response.
98#[derive(Debug, Clone, Deserialize, Serialize)]
99pub struct PdfProgressResponse {
100    pub track_id: String,
101    pub status: String,
102    #[serde(default)]
103    pub progress: Option<f64>,
104}
105
106/// PDF content response.
107#[derive(Debug, Clone, Deserialize, Serialize)]
108pub struct PdfContentResponse {
109    pub id: String,
110    #[serde(default)]
111    pub markdown: Option<String>,
112}
113
114/// Scan request parameters.
115#[derive(Debug, Clone, Serialize)]
116pub struct ScanRequest {
117    pub path: String,
118    #[serde(skip_serializing_if = "Option::is_none")]
119    pub recursive: Option<bool>,
120    #[serde(skip_serializing_if = "Option::is_none")]
121    pub extensions: Option<Vec<String>>,
122}