Skip to main content

ormdantic_schema/
lib.rs

1//! Schema metadata structures used by Ormdantic's Rust runtime.
2//!
3//! ```
4//! use ormdantic_schema::{
5//!     ColumnAlias, ColumnDef, FieldKind, SchemaRegistry, TableDef,
6//! };
7//!
8//! let table = TableDef::from_parts(
9//!     "coffee",
10//!     "Coffee",
11//!     "id",
12//!     vec![
13//!         ColumnDef::new("id", FieldKind::Integer).primary_key(true),
14//!         ColumnDef::new("name", FieldKind::String),
15//!     ],
16//!     Vec::new(),
17//!     Vec::new(),
18//!     Vec::new(),
19//! );
20//!
21//! let mut registry = SchemaRegistry::new();
22//! let table_id = registry.register_table(table)?;
23//! assert_eq!(table_id.0, 0);
24//! assert_eq!(registry.get_table("coffee").unwrap().primary_key(), "id");
25//!
26//! let alias = ColumnAlias::parse("coffee\\name").unwrap();
27//! assert_eq!(alias.table_path(), "coffee");
28//! assert_eq!(alias.column(), "name");
29//!
30//! # Ok::<(), ormdantic_core::OrmdanticError>(())
31//! ```
32
33mod alias;
34mod column;
35mod constraints;
36mod diff;
37mod index;
38mod namespace;
39mod reflection;
40mod registry;
41mod relationships;
42mod table;
43
44pub use alias::ColumnAlias;
45pub use column::{ColumnDef, ColumnDefault, ComputedDef, FieldKind, IdentityDef};
46pub use constraints::{
47    CheckConstraintDef, ConstraintDef, ConstraintTiming, ExclusionConstraintDef,
48    ExclusionElementDef, ForeignKeyAction, ForeignKeyDef, ForeignKeyMatch, OracleIndexCompression,
49    UniqueConstraintDef,
50};
51pub use diff::{SchemaDiff, SchemaDiffer, SchemaOperation, SchemaSnapshot};
52pub use index::IndexDef;
53pub use namespace::{NamespaceDef, SchemaDef};
54pub use reflection::{ReflectedSchema, ReflectedTable};
55pub use registry::SchemaRegistry;
56pub use relationships::{
57    CascadeAction, LoaderStrategy, RelationshipCardinality, RelationshipDef, RelationshipDirection,
58};
59pub use table::{MysqlTableOptions, OracleTableCompression, TableDef};