1#[macro_use]
2mod trace_support;
3
4mod admin;
5mod coordinator;
6mod database_lock;
7mod embedder;
8mod ids;
9mod operational;
10mod projection;
11mod runtime;
12mod sqlite;
13mod telemetry;
14mod writer;
15
16pub use admin::{
17 AdminHandle, AdminService, FtsPropertyPathMode, FtsPropertyPathSpec, FtsPropertySchemaRecord,
18 IntegrityReport, LogicalPurgeReport, LogicalRestoreReport, ProvenancePurgeOptions,
19 ProvenancePurgeReport, SafeExportManifest, SafeExportOptions, SemanticReport, SkippedEdge,
20 TraceReport, VectorRegenerationConfig, VectorRegenerationReport,
21 load_vector_regeneration_config,
22};
23pub use coordinator::{
24 ActionRow, ExecutionCoordinator, ExpansionRootRows, ExpansionSlotRows, GroupedQueryRows,
25 NodeRow, ProvenanceEvent, QueryPlan, QueryRows, RunRow, StepRow,
26};
27#[cfg(feature = "default-embedder")]
28pub use embedder::BuiltinBgeSmallEmbedder;
29pub use embedder::{EmbedderError, QueryEmbedder, QueryEmbedderIdentity};
30pub use ids::{new_id, new_row_id};
31pub use operational::{
32 OperationalCollectionKind, OperationalCollectionRecord, OperationalCompactionReport,
33 OperationalCurrentRow, OperationalFilterClause, OperationalFilterField,
34 OperationalFilterFieldType, OperationalFilterMode, OperationalFilterValue,
35 OperationalHistoryValidationIssue, OperationalHistoryValidationReport, OperationalMutationRow,
36 OperationalPurgeReport, OperationalReadReport, OperationalReadRequest,
37 OperationalRegisterRequest, OperationalRepairReport, OperationalRetentionActionKind,
38 OperationalRetentionPlanItem, OperationalRetentionPlanReport, OperationalRetentionRunItem,
39 OperationalRetentionRunReport, OperationalSecondaryIndexDefinition,
40 OperationalSecondaryIndexField, OperationalSecondaryIndexRebuildReport,
41 OperationalSecondaryIndexValueType, OperationalTraceReport, OperationalValidationContract,
42 OperationalValidationField, OperationalValidationFieldType, OperationalValidationMode,
43};
44pub use projection::{ProjectionRepairReport, ProjectionService, ProjectionTarget};
45pub use runtime::EngineRuntime;
46pub use sqlite::{SharedSqlitePolicy, shared_sqlite_policy};
47pub use telemetry::{
48 SqliteCacheStatus, TelemetryCounters, TelemetryLevel, TelemetrySnapshot, read_db_cache_status,
49};
50pub use writer::{
51 ActionInsert, ChunkInsert, ChunkPolicy, EdgeInsert, EdgeRetire, LastAccessTouchReport,
52 LastAccessTouchRequest, NodeInsert, NodeRetire, OperationalWrite, OptionalProjectionTask,
53 ProvenanceMode, RunInsert, StepInsert, VecInsert, WriteReceipt, WriteRequest, WriterActor,
54};
55
56use thiserror::Error;
57
58#[derive(Debug, Error)]
60pub enum EngineError {
61 #[error("sqlite error: {0}")]
62 Sqlite(#[from] rusqlite::Error),
63 #[error("schema error: {0}")]
64 Schema(#[from] fathomdb_schema::SchemaError),
65 #[error("io error: {0}")]
66 Io(#[from] std::io::Error),
67 #[error("writer actor rejected request: {0}")]
68 WriterRejected(String),
69 #[error("write timed out (may still commit): {0}")]
70 WriterTimedOut(String),
71 #[error("invalid write request: {0}")]
72 InvalidWrite(String),
73 #[error("bridge error: {0}")]
74 Bridge(String),
75 #[error("capability missing: {0}")]
76 CapabilityMissing(String),
77 #[error("database locked: {0}")]
78 DatabaseLocked(String),
79 #[error("invalid configuration: {0}")]
80 InvalidConfig(String),
81 #[error(
82 "embedder not configured: call Engine::open with a non-None EmbedderChoice to regenerate vector embeddings"
83 )]
84 EmbedderNotConfigured,
85}