Skip to main content

hematite/catalog/
mod.rs

1//! Relational catalog and access-method layer.
2//!
3//! Boundary:
4//! - This module owns relational meaning: schemas, rows, primary keys, secondary indexes, and
5//!   relational codecs.
6//! - It builds on the generic [`crate::storage`] and [`crate::btree`] layers but should not be
7//!   part of the future generic fork.
8//! - The intended fork point is below this module: keep `storage` + `btree`, replace `catalog`,
9//!   `query`, and `sql` with the next database model.
10
11pub mod catalog;
12pub mod column;
13pub mod cursor;
14pub mod engine;
15pub(crate) mod engine_metadata;
16pub mod header;
17pub mod ids;
18pub(crate) mod index_store;
19pub(crate) mod integrity;
20pub mod object;
21pub mod record;
22pub mod row_id;
23pub(crate) mod runtime_metadata;
24pub mod schema;
25pub(crate) mod schema_store;
26pub mod serialization;
27pub mod table;
28pub(crate) mod table_store;
29pub mod tests;
30pub mod types;
31
32// Re-export main types for easier access
33pub use catalog::Catalog;
34pub use column::Column;
35pub use cursor::{IndexCursor, TableCursor};
36pub use engine::{
37    CatalogEngine, CatalogIntegrityReport, CatalogStorageStats, TableRuntimeMetadata,
38};
39pub use header::DatabaseHeader;
40pub use ids::{ColumnId, TableId};
41pub use object::{NamedConstraint, NamedConstraintKind, Trigger, TriggerEvent, View};
42pub use record::StoredRow;
43pub use schema::Schema;
44pub use serialization::{IndexKeyCodec, RowCodec, RowSerializer};
45pub use table::{SecondaryIndex, Table};
46pub use types::{
47    DataType, DateTimeValue, DateValue, DecimalValue, IntervalDaySecondValue,
48    IntervalYearMonthValue, JournalMode, TimeValue, TimeWithTimeZoneValue, Value,
49};