1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
4pub struct UpdateOptions {
5 pub space: Option<String>,
6 pub collections: Vec<String>,
7 pub no_embed: bool,
8 pub dry_run: bool,
9 pub verbose: bool,
10}
11
12#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
13pub struct UpdateReport {
14 pub scanned_docs: usize,
15 pub skipped_mtime_docs: usize,
16 pub skipped_hash_docs: usize,
17 pub added_docs: usize,
18 pub updated_docs: usize,
19 pub failed_docs: usize,
20 pub deactivated_docs: usize,
21 pub reactivated_docs: usize,
22 pub reaped_docs: usize,
23 pub embedded_chunks: usize,
24 pub decisions: Vec<UpdateDecision>,
25 pub errors: Vec<FileError>,
26 pub elapsed_ms: u64,
27}
28
29#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
30pub struct UpdateDecision {
31 pub space: String,
32 pub collection: String,
33 pub path: String,
34 pub kind: UpdateDecisionKind,
35 pub detail: Option<String>,
36}
37
38#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
39pub enum UpdateDecisionKind {
40 New,
41 Changed,
42 SkippedMtime,
43 SkippedHash,
44 Ignored,
45 Unsupported,
46 ReadFailed,
47 ExtractFailed,
48 Reactivated,
49 Deactivated,
50}
51
52#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
53pub struct FileError {
54 pub path: String,
55 pub error: String,
56}