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};