Skip to main content

modelvault_core/
lib.rs

1//! Embedded ModelVault database engine: append-only segments, versioned schema catalog, and
2//! last-write-wins row storage keyed by primary values.
3//!
4//! ## Stable API (0.16+)
5//!
6//! Prefer [`Database`], [`prelude`], and root type re-exports. Modules marked `#[doc(hidden)]`
7//! are format/engine internals and may change in minor releases.
8//!
9//! Start with [`Database`] for open, register, insert, and get. Supporting types include
10//! [`Catalog`], [`ScalarValue`], [`FieldDef`], and [`DbError`]. For a small import set, use
11//! [`prelude`].
12
13pub mod catalog;
14#[doc(hidden)]
15pub mod checkpoint;
16#[doc(hidden)]
17pub mod checksum;
18pub mod config;
19pub use config::{OpenMode, OpenOptions, OpenOptionsBuilder, OpenRecoveryInfo, RecoveryMode};
20pub mod db;
21pub mod error;
22#[doc(hidden)]
23pub mod file_format;
24pub mod index;
25#[doc(hidden)]
26pub mod manifest;
27pub mod migration;
28#[doc(hidden)]
29pub mod pager;
30#[doc(hidden)]
31pub mod publish;
32pub mod query;
33pub mod record;
34pub mod schema;
35pub mod schema_compat;
36#[doc(hidden)]
37pub mod segments;
38#[doc(hidden)]
39pub mod spill;
40pub mod sql;
41pub mod storage;
42#[doc(hidden)]
43pub mod superblock;
44#[doc(hidden)]
45pub mod txn;
46pub mod validation;
47
48pub use catalog::{Catalog, CatalogRecord, CollectionInfo};
49pub use db::Database;
50pub use db::{
51    read_header_and_superblocks, scan_database_file, scan_database_store, select_superblock,
52    DatabaseFileScan, DatabaseScanMode, SEGMENT_REGION_START,
53};
54pub use error::DbError;
55pub use error::DbErrorKind;
56pub use error::FormatError;
57pub use error::SchemaError;
58pub use error::TransactionError;
59pub use error::ValidationError;
60pub use migration::{MigrationPlan, MigrationStep};
61pub use record::RowValue;
62pub use record::ScalarValue;
63pub use schema::CollectionId;
64pub use schema::CollectionSchema;
65pub use schema::Constraint;
66pub use schema::DbModel;
67pub use schema::FieldDef;
68pub use schema::IndexDef;
69pub use schema::IndexKind;
70pub use schema::SchemaVersion;
71pub use schema::Type;
72pub use schema_compat::classify_schema_update;
73pub use schema_compat::validate_model_fields_against_catalog;
74
75/// Convenient re-exports for typical application code (`Database`, schema types, [`DbError`]).
76pub mod prelude {
77    pub use crate::catalog::{Catalog, CollectionInfo};
78    pub use crate::db::Database;
79    pub use crate::error::DbError;
80    pub use crate::record::RowValue;
81    pub use crate::record::ScalarValue;
82    pub use crate::schema::CollectionId;
83    pub use crate::schema::CollectionSchema;
84    pub use crate::schema::DbModel;
85    pub use crate::schema::FieldDef;
86    pub use crate::schema::IndexDef;
87    pub use crate::schema::IndexKind;
88    pub use crate::schema::SchemaVersion;
89}