Skip to main content

kbolt_types/
space.rs

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}