1use std::path::PathBuf;
2
3use serde::{Deserialize, Serialize};
4
5use crate::indexing::UpdateReport;
6
7#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq)]
8pub enum ActiveSpaceSource {
9 Flag,
10 EnvVar,
11 ConfigDefault,
12}
13
14#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
15pub struct ActiveSpace {
16 pub name: String,
17 pub source: ActiveSpaceSource,
18}
19
20#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
21pub struct SpaceInfo {
22 pub name: String,
23 pub description: Option<String>,
24 pub collection_count: usize,
25 pub document_count: usize,
26 pub chunk_count: usize,
27 pub created: String,
28}
29
30#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
31pub struct AddCollectionRequest {
32 pub path: PathBuf,
33 pub space: Option<String>,
34 pub name: Option<String>,
35 pub description: Option<String>,
36 pub extensions: Option<Vec<String>>,
37 pub no_index: bool,
38}
39
40#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
41pub struct CollectionInfo {
42 pub name: String,
43 pub space: String,
44 pub path: PathBuf,
45 pub description: Option<String>,
46 pub extensions: Option<Vec<String>>,
47 pub document_count: usize,
48 pub active_document_count: usize,
49 pub chunk_count: usize,
50 pub embedded_chunk_count: usize,
51 pub created: String,
52 pub updated: String,
53}
54
55#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
56pub struct AddCollectionResult {
57 pub collection: CollectionInfo,
58 pub initial_indexing: InitialIndexingOutcome,
59}
60
61#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
62pub enum InitialIndexingOutcome {
63 Skipped,
64 Indexed(UpdateReport),
65 Blocked(InitialIndexingBlock),
66}
67
68#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
69pub enum InitialIndexingBlock {
70 SpaceDenseRepairRequired { space: String, reason: String },
71 ModelNotAvailable { name: String },
72}