Skip to main content

Module schema

Module schema 

Source
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 indexes
  • FieldDef - Column definition with Rust and SQL types
  • FunctionDef - Query/mutation signatures for codegen
  • SchemaRegistry - 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.
EnumVariant
Enum variant definition.
FieldDef
Definition of a model field.
FunctionArg
Function argument definition.
FunctionDef
Function definition.
IndexDef
Single-column index definition.
SchemaRegistry
Global registry of all schema definitions. This is populated at compile time by the proc macros. Uses BTreeMap for deterministic iteration order.
TableDef
Complete table definition.

Enums§

FunctionKind
Function kind (query, mutation, job, cron, workflow).
RelationType
Relation type for foreign key relationships.
RustType
Rust type information for code generation.
SqlType
PostgreSQL column types.

Traits§

ModelMeta
Trait implemented by all FORGE models. Generated by the #[forge::model] macro.