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//! Start with [`Database`] for open, register, insert, and get. Supporting types include
5//! [`Catalog`], [`ScalarValue`], [`FieldDef`], and [`DbError`]. For a small import set, use
6//! [`prelude`].
7
8pub mod catalog;
9pub mod checkpoint;
10pub mod checksum;
11pub mod config;
12pub use config::{OpenMode, OpenOptions, RecoveryMode};
13pub mod db;
14pub mod error;
15pub mod file_format;
16pub mod index;
17pub mod manifest;
18pub mod migration;
19pub mod pager;
20pub mod publish;
21pub mod query;
22pub mod record;
23pub mod schema;
24pub mod schema_compat;
25pub mod segments;
26pub mod spill;
27pub mod sql;
28pub mod storage;
29pub mod superblock;
30pub mod txn;
31pub mod validation;
32
33pub use catalog::{Catalog, CatalogRecord, CollectionInfo};
34pub use db::Database;
35pub use error::DbError;
36pub use error::DbErrorKind;
37pub use error::FormatError;
38pub use error::SchemaError;
39pub use error::TransactionError;
40pub use error::ValidationError;
41pub use migration::{MigrationPlan, MigrationStep};
42pub use record::RowValue;
43pub use record::ScalarValue;
44pub use schema::CollectionId;
45pub use schema::CollectionSchema;
46pub use schema::Constraint;
47pub use schema::DbModel;
48pub use schema::FieldDef;
49pub use schema::IndexDef;
50pub use schema::IndexKind;
51pub use schema::SchemaVersion;
52pub use schema::Type;
53pub use schema_compat::classify_schema_update;
54pub use schema_compat::validate_model_fields_against_catalog;
55
56/// Convenient re-exports for typical application code (`Database`, schema types, [`DbError`]).
57pub mod prelude {
58    pub use crate::catalog::{Catalog, CollectionInfo};
59    pub use crate::db::Database;
60    pub use crate::error::DbError;
61    pub use crate::record::RowValue;
62    pub use crate::record::ScalarValue;
63    pub use crate::schema::CollectionId;
64    pub use crate::schema::CollectionSchema;
65    pub use crate::schema::DbModel;
66    pub use crate::schema::FieldDef;
67    pub use crate::schema::IndexDef;
68    pub use crate::schema::IndexKind;
69    pub use crate::schema::SchemaVersion;
70}