跳转到内容
Tauri

SQL

这个插件提供了一个接口,让前端可以通过 sqlx 与 SQL 数据库进行通信。 它支持 SQLite、MySQL 和 PostgreSQL 驱动程序,通过 Cargo 特性来启用。

Supported Platforms

This plugin requires a Rust version of at least 1.77.2

Platform Level Notes
windows
linux
macos
android
ios

安装

首先,在你的 Cargo.toml 文件中添加以下内容来安装插件。

src-tauri/Cargo.toml
[dependencies.tauri-plugin-sql]
features = ["sqlite"] # or "postgres", or "mysql"
version = "2.0.0"

然后,你必须使用你喜欢的 JavaScript 包管理器添加 JavaScript Guest 绑定。

npm add @tauri-apps/plugin-sql

用法

首先,你需要在 Tauri 中注册插件:

src-tauri/src/main.rs
fn main() {
tauri::Builder::default()
.plugin(tauri_plugin_sql::Builder::default().build())
.run(tauri::generate_context!())
.expect("error while running tauri application");
}

之后,所有插件的 API 都可以通过 JavaScript Guest 绑定使用。

这个路径是相对于 tauri::api::path::BaseDirectory::App 的。

import Database from '@tauri-apps/plugin-sql';
const db = await Database.load('sqlite:test.db');
await db.execute('INSERT INTO ...');

语法

我们使用 sqlx 作为底层库并采用它们的查询语法。

在替换查询数据时使用 ”$#” 语法

const result = await db.execute(
"INSERT into todos (id, title, status) VALUES ($1, $2, $3)",
[todos.id, todos.title, todos.status],
);
const result = await db.execute(
"UPDATE todos SET title = $1, status = $2 WHERE id = $3",
[todos.title, todos.status, todos.id],
);

迁移

这个插件支持数据库迁移,允许你管理数据库模式随时间的变化。

定义迁移

迁移在 Rust 中使用 Migration 结构体定义。 每个迁移都应该包含唯一的版本号、描述、要执行的 SQL 和迁移类型(向上或向下)。

迁移的例子:

use tauri_plugin_sql::{Migration, MigrationKind};
let migration = Migration {
version: 1,
description: "create_initial_tables",
sql: "CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT);",
kind: MigrationKind::Up,
};

向插件构建器添加迁移

迁移用插件提供的 Builder 结构体注册。 使用 add_migrations 方法将迁移添加到特定数据库连接的插件中。

添加迁移的例子:

src-tauri/src/main.rs
use tauri_plugin_sql::{Builder, Migration, MigrationKind};
fn main() {
let migrations = vec![
// Define your migrations here
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(),
)
...
}

应用迁移

迁移在插件初始化时自动应用。插件针对连接字符串指定的数据库运行这些迁移。确保迁移按照正确的顺序定义,并且是幂等的(可以安全运行多次)。

迁移管理

  • 版本控制:每个迁移必须有一个唯一的版本号。这对于确保迁移按正确的顺序应用至关重要。
  • 幂等性:编写迁移时,要确保它们能够安全重新运行,而不会导致错误或意外后果。
  • 测试:彻底测试迁移,确保它们按预期工作,并且不会损害数据库的完整性。

© 2024 Tauri Contributors. CC-BY / MIT