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
- Migration
Builder - Builder for creating migrations
- Migration
Manager - Migration manager for handling database schema changes