Skip to main content

sift_core/index/
config.rs

1use std::path::{Path, PathBuf};
2
3use serde::{Deserialize, Serialize};
4
5use crate::search::filter::VisibilityConfig;
6
7/// Whether the index was built from a directory or a single file.
8#[derive(Debug, Clone, Copy, PartialEq, Eq, Default, Serialize, Deserialize)]
9pub enum CorpusKind {
10    /// Built from a directory path — all discovered files were indexed.
11    #[default]
12    Directory,
13    /// Built from a single file path — only that file was indexed.
14    SingleFile,
15}
16
17/// Configuration for building or updating an index over a corpus.
18pub struct IndexConfig<'a> {
19    pub corpus: CorpusSpec<'a>,
20    pub visibility: VisibilityConfig,
21}
22
23/// Description of a corpus to index.
24pub struct CorpusSpec<'a> {
25    pub root: &'a Path,
26    pub kind: CorpusKind,
27    pub follow_links: bool,
28    pub include_paths: &'a [PathBuf],
29    pub exclude_paths: &'a [PathBuf],
30}