Module migrations

Module migrations 

Source
Expand description

Type-Safe Database Migrations System

This module provides a compile-time validated migrations system inspired by Django, where:

  • Invalid migrations fail to compile (missing columns, wrong types, etc.)
  • Operations are reversible with typed up() and down() methods
  • SQL generation is dialect-aware

§Example

use oxide_sql_core::migrations::{
    Migration, Operation, CreateTableBuilder,
    bigint, varchar, timestamp, boolean,
};

pub struct Migration0001;

impl Migration for Migration0001 {
    const ID: &'static str = "0001_create_users";

    fn up() -> Vec<Operation> {
        vec![
            CreateTableBuilder::new()
                .name("users")
                .column(bigint("id").primary_key().autoincrement().build())
                .column(varchar("username", 255).not_null().unique().build())
                .column(varchar("email", 255).build())
                .column(timestamp("created_at").not_null().default_expr("CURRENT_TIMESTAMP").build())
                .build()
                .into(),
        ]
    }

    fn down() -> Vec<Operation> {
        vec![
            Operation::drop_table("users"),
        ]
    }
}

Re-exports§

pub use dialect::DuckDbDialect;
pub use dialect::MigrationDialect;
pub use dialect::PostgresDialect;
pub use dialect::SqliteDialect;
pub use diff::AmbiguousChange;
pub use diff::SchemaDiff;
pub use diff::auto_diff_schema;
pub use diff::auto_diff_table;
pub use introspect::Introspect;
pub use snapshot::ColumnSnapshot;
pub use snapshot::SchemaSnapshot;
pub use snapshot::TableSnapshot;

Modules§

dialect
Dialect-specific SQL generation for migrations.
diff
Schema diff engine for auto-migration generation.
introspect
Schema introspection trait.
snapshot
Schema snapshot types for diff-based migration generation.

Structs§

AddColumnOp
Add column operation.
AddForeignKeyOp
Add foreign key operation.
AlterColumnOp
Alter column operation.
ColumnBuilder
Type-safe column definition builder.
ColumnDefinition
A complete column definition for migrations.
CreateIndexOp
Create index operation.
CreateTableBuilder
Type-safe CREATE TABLE builder.
CreateTableOp
Create table operation.
DropColumnOp
Drop column operation.
DropForeignKeyOp
Drop foreign key operation.
DropIndexOp
Drop index operation.
DropTableBuilder
Builder for DROP TABLE operations.
DropTableOp
Drop table operation.
ForeignKeyRef
A reference to a foreign key in another table.
HasColumns
Marker: table has at least one column.
HasName
Marker: table has a name set.
MigrationRunner
Runs migrations in dependency order.
MigrationState
Tracks which migrations have been applied.
MigrationStatus
Status of a migration.
NoColumns
Marker: table has no columns.
NoName
Marker: table has no name set.
RawSqlOp
Raw SQL operation.
RenameColumnOp
Rename column operation.
RenameTableOp
Rename table operation.

Enums§

AlterColumnChange
Column alteration type.
DefaultValue
Default value for a column.
IndexType
Index type.
Operation
All possible migration operations.

Traits§

Migration
A database migration with typed up/down operations.

Functions§

bigint
Creates a BIGINT column builder.
binary
Creates a BINARY column builder.
blob
Creates a BLOB column builder.
boolean
Creates a BOOLEAN column builder.
char
Creates a CHAR column builder.
date
Creates a DATE column builder.
datetime
Creates a DATETIME column builder.
decimal
Creates a DECIMAL column builder.
double
Creates a DOUBLE column builder.
integer
Creates an INTEGER column builder.
numeric
Creates a NUMERIC column builder.
real
Creates a REAL column builder.
smallint
Creates a SMALLINT column builder.
text
Creates a TEXT column builder.
time
Creates a TIME column builder.
timestamp
Creates a TIMESTAMP column builder.
varbinary
Creates a VARBINARY column builder.
varchar
Creates a VARCHAR column builder.