Module migrations

Source
Expand description

Database migration system for libsql-orm

This module provides a comprehensive migration system for managing database schema changes over time. It supports creating, executing, and tracking migrations with both manual and auto-generated approaches.

§Features

  • Auto-generation: Generate migrations from model definitions
  • Manual creation: Build custom migrations with the builder pattern
  • Templates: Pre-built migration templates for common operations
  • History tracking: Track which migrations have been executed
  • Rollback support: Reverse migrations with down scripts
  • Batch execution: Run multiple migrations in sequence

§Basic Usage

use libsql_orm::{MigrationManager, MigrationBuilder, generate_migration};

async fn run_migrations(db: Database) -> Result<(), Error> {
    let manager = MigrationManager::new(db);
    manager.init().await?;
     
    // Auto-generate from model
    let migration = generate_migration!(User);
    manager.execute_migration(&migration).await?;
     
    // Manual migration
    let manual_migration = MigrationBuilder::new("add_index")
        .up("CREATE INDEX idx_users_email ON users(email)")
        .down("DROP INDEX idx_users_email")
        .build();
     
    manager.execute_migration(&manual_migration).await?;
    Ok(())
}

§Migration Templates

use libsql_orm::templates;

// Create table
let create_table = templates::create_table("posts", &[
    ("id", "INTEGER PRIMARY KEY AUTOINCREMENT"),
    ("title", "TEXT NOT NULL"),
    ("content", "TEXT"),
]);

// Add column
let add_column = templates::add_column("posts", "published_at", "TEXT");

// Create index
let create_index = templates::create_index("idx_posts_title", "posts", &["title"]);

Modules§

templates
Common migration templates

Structs§

Migration
Represents a database migration
MigrationBuilder
Builder for creating migrations
MigrationManager
Migration manager for handling database schema changes