Skip to main content

uni_db/
lib.rs

1// SPDX-License-Identifier: Apache-2.0
2// Copyright 2024-2026 Dragonscale Team
3
4//! # Uni - Embedded Graph Database
5//!
6//! Uni is an embedded, object-store-backed graph database with OpenCypher queries,
7//! columnar analytics, and vector search.
8
9pub mod api;
10mod shutdown;
11
12pub use api::appender::{AppenderBuilder, StreamingAppender};
13pub use api::builder::PropertiesBuilder;
14pub use api::hooks::{CommitHookContext, HookContext, QueryType, SessionHook};
15pub use api::impl_locy::LocyRuleRegistry;
16pub use api::multi_agent::{LeaseGuard, WriteLease, WriteLeaseProvider};
17pub use api::notifications::{CommitNotification, CommitStream, WatchBuilder};
18pub use api::prepared::{PreparedLocy, PreparedLocyBinder, PreparedQuery, PreparedQueryBinder};
19pub use api::rule_registry::{RuleInfo, RuleRegistry};
20pub use api::schema::{
21    ConstraintInfo, EdgeTypeBuilder, EdgeTypeInfo, IndexInfo, IndexType, LabelBuilder, LabelInfo,
22    PropertyInfo, ScalarType, SchemaBuilder, VectorAlgo, VectorIndexCfg, VectorMetric,
23};
24pub use api::session::{
25    Session, SessionCapabilities, SessionMetrics, TransactionBuilder, WriteLeaseSummary,
26};
27pub use api::sync::{
28    ApplyBuilderSync, ExecuteBuilderSync, LocyBuilderSync, QueryBuilderSync, SessionSync,
29    TransactionBuilderSync, TransactionSync, TxLocyBuilderSync, TxQueryBuilderSync, UniSync,
30};
31pub use api::template::{SessionTemplate, SessionTemplateBuilder};
32pub use api::transaction::{
33    ApplyBuilder, ApplyResult, CommitResult, ExecuteBuilder, IsolationLevel, Transaction,
34};
35pub use api::xervo::UniXervo;
36
37// Re-exports from xervo for catalog parsing
38pub use api::{DatabaseMetrics, ThrottlePressure, Uni, UniBuilder};
39pub use uni_xervo::api::{
40    ModelAliasSpec, ModelTask, WarmupPolicy, catalog_from_file as xervo_catalog_from_file,
41    catalog_from_str as xervo_catalog_from_str,
42};
43
44// Re-exports from internal crates
45pub use uni_common::{
46    CrdtType, DataType, Eid, Result, Schema, UniConfig, UniError, UniId, Vid, unival,
47};
48pub use uni_query::{
49    Edge, ExecuteResult, ExplainOutput, FromValue, Node, Path, ProfileOutput, QueryMetrics,
50    QueryResult, QueryWarning, Row, Value,
51};
52
53#[cfg(feature = "storage-internals")]
54pub use uni_store::storage::StorageManager;
55
56#[cfg(feature = "snapshot-internals")]
57pub use uni_common::core::snapshot::SnapshotManifest;
58#[cfg(feature = "snapshot-internals")]
59pub use uni_store::snapshot::manager::SnapshotManager;
60
61// Re-export crates
62pub use uni_algo as algo_crate;
63pub use uni_common as common;
64pub use uni_query as query_crate;
65pub use uni_store as store;
66
67// Module aliases for internal crate access
68pub mod core {
69    pub use crate::common::core::*;
70}
71
72pub mod storage {
73    pub use crate::store::storage::*;
74    // Fix for tests expecting IndexManager in storage root or similar?
75    // tests use uni_db::storage::manager::StorageManager.
76    // crate::store::storage has manager.
77}
78
79pub mod runtime {
80    pub use crate::store::runtime::*;
81}
82
83pub mod query {
84    pub use crate::query_crate::query::*;
85}
86
87pub mod algo {
88    // Tests use uni_db::algo::* (from src/algo).
89    // uni-algo has `algo` module.
90    pub use crate::algo_crate::algo::*;
91}
92
93pub mod xervo {
94    pub use crate::api::xervo::*;
95}
96
97pub mod locy {
98    pub use crate::api::impl_locy::LocyEngine;
99    pub use crate::api::locy_result::{LocyExplainOutput, LocyResult};
100    pub use uni_cypher::locy_ast::LocyProgram;
101    pub use uni_cypher::{ParseError, parse_locy};
102    pub use uni_locy::LocyResult as RawLocyResult;
103    pub use uni_locy::{
104        CommandResult, CompiledProgram, DerivedEdge, DerivedFactSet, LocyCompileError, LocyConfig,
105        LocyError,
106    };
107}