kbolt-types 0.1.1

Shared request and response types for kbolt
Documentation
use std::path::PathBuf;

use serde::{Deserialize, Serialize};

use crate::indexing::UpdateReport;

#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq)]
pub enum ActiveSpaceSource {
    Flag,
    EnvVar,
    ConfigDefault,
}

#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct ActiveSpace {
    pub name: String,
    pub source: ActiveSpaceSource,
}

#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct SpaceInfo {
    pub name: String,
    pub description: Option<String>,
    pub collection_count: usize,
    pub document_count: usize,
    pub chunk_count: usize,
    pub created: String,
}

#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct AddCollectionRequest {
    pub path: PathBuf,
    pub space: Option<String>,
    pub name: Option<String>,
    pub description: Option<String>,
    pub extensions: Option<Vec<String>>,
    pub no_index: bool,
}

#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct CollectionInfo {
    pub name: String,
    pub space: String,
    pub path: PathBuf,
    pub description: Option<String>,
    pub extensions: Option<Vec<String>>,
    pub document_count: usize,
    pub active_document_count: usize,
    pub chunk_count: usize,
    pub embedded_chunk_count: usize,
    pub created: String,
    pub updated: String,
}

#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct AddCollectionResult {
    pub collection: CollectionInfo,
    pub initial_indexing: InitialIndexingOutcome,
}

#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub enum InitialIndexingOutcome {
    Skipped,
    Indexed(UpdateReport),
    Blocked(InitialIndexingBlock),
}

#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub enum InitialIndexingBlock {
    SpaceDenseRepairRequired { space: String, reason: String },
    ModelNotAvailable { name: String },
}