Define and apply database migrations
v1The plugin supports schema evolution through migrations defined in Rust. Migrations are applied automatically when the plugin is initialized against the specified connection string.
Defining a Migration
Use the Migration struct. Each migration requires:
version: A unique integer.description: A string describing the change.sql: The SQL statement to execute.kind: EitherMigrationKind::UporMigrationKind::Down.
Registering Migrations
Use the .add_migrations(connection_string, migrations) method on the tauri_plugin_sql::Builder during plugin initialization.
Best Practices
- Version Control: Ensure every migration has a unique version number to maintain correct execution order.
- Idempotency: Write SQL that is safe to run multiple times without causing errors.
- Testing: Verify migrations thoroughly to prevent database corruption.
use tauri_plugin_sql::{Builder, Migration, MigrationKind};
fn main() {
let migrations = vec![
Migration {
version: 1,
description: "create_initial_tables",
sql: "CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT);",
kind: MigrationKind::Up,
}
];
tauri::Builder::default()
.plugin(
tauri_plugin_sql::Builder::default()
.add_migrations("sqlite:mydatabase.db", migrations)
.build(),
)
.run(tauri::generate_context())
.expect("error while running tauri application");
}