Skip to main content

forge_core/schema/
mod.rs

1//! Schema definition and registration system.
2//!
3//! This module provides types for defining database schemas declaratively in Rust.
4//! Schemas are registered at compile time via proc macros and used for:
5//!
6//! - TypeScript client generation
7//! - Migration diffing
8//! - Runtime introspection
9//!
10//! # Key Types
11//!
12//! - [`TableDef`] - Table schema with fields and indexes
13//! - [`FieldDef`] - Column definition with Rust and SQL types
14//! - [`FunctionDef`] - Query/mutation signatures for codegen
15//! - [`SchemaRegistry`] - Global registry populated by macros
16//!
17//! # Example
18//!
19//! ```ignore
20//! #[derive(sqlx::FromRow, Serialize, Deserialize)]
21//! #[forge::model]
22//! pub struct User {
23//!     pub id: Uuid,
24//!     pub email: String,
25//!     pub created_at: DateTime<Utc>,
26//! }
27//! ```
28
29mod field;
30mod function;
31mod model;
32mod registry;
33mod types;
34
35pub use field::FieldDef;
36pub use function::{FunctionArg, FunctionDef, FunctionKind};
37pub use model::{IndexDef, ModelMeta, RelationType, TableDef};
38pub use registry::{EnumDef, EnumVariant, SchemaRegistry};
39pub use types::{RustType, SqlType};