Expand description
Schema definition and registration system.
This module provides types for defining database schemas declaratively in Rust. Schemas are registered at compile time via proc macros and used for:
- TypeScript client generation
- Migration diffing
- Runtime introspection
§Key Types
TableDef- Table schema with fields and indexesFieldDef- Column definition with Rust and SQL typesFunctionDef- Query/mutation signatures for codegenSchemaRegistry- Global registry populated by macros
§Example
ⓘ
#[derive(sqlx::FromRow, Serialize, Deserialize)]
#[forge::model]
pub struct User {
pub id: Uuid,
pub email: String,
pub created_at: DateTime<Utc>,
}Structs§
- EnumDef
- Enum type definition.
- Enum
Variant - Enum variant definition.
- Field
Def - Definition of a model field.
- Function
Arg - Function argument definition.
- Function
Def - Function definition.
- Index
Def - Single-column index definition.
- Schema
Registry - Global registry of all schema definitions. This is populated at compile time by the proc macros. Uses BTreeMap for deterministic iteration order.
- Table
Def - Complete table definition.
Enums§
- Function
Kind - Function kind (query, mutation, job, cron, workflow).
- Relation
Type - Relation type for foreign key relationships.
- Rust
Type - Rust type information for code generation.
- SqlType
- PostgreSQL column types.
Traits§
- Model
Meta - Trait implemented by all FORGE models. Generated by the #[forge::model] macro.