tauri-plugin-sqlはsqlxを介してsqlite, mysql, postgresドライバをサポートするTauriプラグインインターフェースを提供するRustライブラリです。今回はtauri-plugin-sqlのマイグレーション機能を使ってDBのTABLEを作成する方法を紹介します。
インストール
githubのREADME.mdを参考にtauri-plugin-sqlプラグインをインストールしてください。注意点としては、事前にgitをインストールしておく必要があります。
plugins-workspace/plugins/sql at v1 · tauri-apps/plugins-workspace
All of the official Tauri plugins in one place! Contribute to tauri-apps/plugins-workspace development by creating an ac...
CREATE TABLE文の準備
src-tauriフォルダの直下にmigrationsフォルダを作成し、実行したいSQLファイルを用意します。
migrationの登録
main.rsにマイグレーションに指定するsqlを指定します。
fn main() {
tauri::Builder::default()
.invoke_handler(tauri::generate_handler![greet])
// プラグイン登録
.plugin(
tauri_plugin_sql::Builder::default()
.add_migrations(
"sqlite:migrate-app.db", // (1)
vec![tauri_plugin_sql::Migration {
version: 1,
description: "create table",
sql: include_str!("../migrations/ver1.sql"), // (2)
kind: tauri_plugin_sql::MigrationKind::Up,
}],
)
.build(),
)
.run(tauri::generate_context!())
.expect("error while running tauri application");
}
(1) 使用するDBを指定します。例はsqliteを使用しています。
(2) 実行するsqlを指定します。
SQLの実行タイミング
add_migrationsメソッドではマイグレーション用のsqlを登録するだけで、このタイミングではsqlは実行されません。Databaseをloadしたタイミングで実行されます。JavaScript側で実行する場合は
import Database from "tauri-plugin-sql-api";
// sqlite. The path is relative to `tauri::api::path::BaseDirectory::App`.
const db = await Database.load("sqlite:test.db");
のタイミングで実行されます。
実行した結果、TODOテーブルが登録されるのが確認できます。_sqlx_migrationsテーブルはマイグレーションを管理する為に自動で作成されるテーブルです。
複数指定する場合
バージョンアップなどで、追加のsqlを実行したい場合は、migrationsフォルダにsqlファイルを追加して、main.rsに追加したsqlファイルを指定します。
fn main() {
tauri::Builder::default()
.invoke_handler(tauri::generate_handler![greet])
// プラグイン登録
.plugin(
tauri_plugin_sql::Builder::default()
.add_migrations(
"sqlite:migrate-app.db",
vec![
tauri_plugin_sql::Migration {
version: 1,
description: "create table",
sql: include_str!("../migrations/ver1.sql"),
kind: tauri_plugin_sql::MigrationKind::Up,
},
tauri_plugin_sql::Migration {
version: 2,
description: "create table fro ver2",
sql: include_str!("../migrations/ver2.sql"),
kind: tauri_plugin_sql::MigrationKind::Up,
},
],
)
.build(),
)
.run(tauri::generate_context!())
.expect("error while running tauri application");
}
コメント
main.ts と書かれているのは、main.rs の間違いかと思います。
修正されたらコメントは削除して頂いて結構です。
ありがとうございます。修正しました。