Tauri集成plugin-sql

Tauri集成plugin-sql

最近在做一个单体的任务清单小工具,使用Tauri+Vue3开发,计划使用sqlite作为数据源存储任务信息,简单的记录集成的过程。

添加依赖

切换到src-tauri目录下,执行:
cargo add tauri-plugin-sql --features sqlite

或者直接在Cargo.toml文件中添加:

[dependencies.tauri-plugin-sql]
features = ["sqlite"]
version = "*"

注意,这个插件要求的rust版本不能低于1.80

注册组件到Tauri应用

找到Tauri的初始化方法(通常在src-tauri/src/main.rs或lib.rs中)

注册组件:

tauri::Builder::default()
        .plugin(tauri_plugin_sql::Builder::new().build()) // 注册sql组件
        .run(tauri::generate_context!())
        .expect("error while running tauri application");

数据库迁移

  • Tauri支持数据库的自动迁移功能,提前准备好迁移的sql语句,保存到sql文件中(其实txt都行),我这里保存到了src-tauri/migrations/1_tables_tasks.sql
CREATE TABLE IF NOT EXISTS tasks (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    title TEXT NOT NULL,
    content TEXT,
    completed BOOLEAN NOT NULL DEFAULT 0,
    task_type TEXT,
    start TEXT NOT NULL,
    end TEXT NULL,
    all_day BOOLEAN NULL
);
  • 在注册组件时,可以在构造tauri_plugin_sql的时候添加迁移选项来执行迁移相关的sql:
let migrations = vec![Migration {
    version: 1,
    description: "create_initial_tables",
    sql: include_str!("../migrations/1_create_tasks_table.sql"),
    kind: MigrationKind::Up,
}];
// 只保留构造部分
tauri_plugin_sql::Builder::default()
                .add_migrations("sqlite:r_task.db", migrations)
                .build()

这里的migrations是一个向量,可以同时指定多个迁移语句

  • 到这里还没完,还需要在src-tauri/tauri.conf.json中添加配置,使得项目启动的时候执行上面配置的迁移

找到plugins(没有的话手动添加,Tauri2.x的plugins在最顶级),在里面添加:

"sql": {
    "preload": ["sqlite:r_task.db"]
}

执行sql

  • tauri-plugin-sql提供了js/ts执行sql语句的能力,需要先在访问控制列表中添加sql执行的权限

打开src-tauri/capabilities/default.json,当然,也可以新建一个json/toml来配置,在permissions里面添加sql的执行权限:

"sql:allow-execute"

如果不配置的话,在执行sql的时候可能会报错:

Unhandled Promise Rejection: sql.execute not allowed. Permissions associated with this command: sql:allow-execute
  • 控制台切换到项目根目录,添加sql插件:
npm run tauri add sql
  • 万事俱备,尝试下执行sql
// 引入插件
import Database from '@tauri-apps/plugin-sql';

// 加载数据库
const db = await Database.load('sqlite:r_task.db');

// 执行sql查询,这里也可以是异步的
db.select("select * from tasks").then(result => {
    console.log(result)
});
  • 打开控制台验证下
    在这里插入图片描述

  • 验证通过,撒花🎉🎉🎉

### 关于 Tauri Apps 的 Barcode Scanner 插件 Tauri 是一种用于构建安全、快速和小型二进制文件的跨平台应用程序框架。它允许开发者通过 Web 技术(HTML, CSS 和 JavaScript/TypeScript)创建桌面应用,并利用 Rust 提供的安全性和性能优势。 关于 `@tauri-apps/plugin-barcode-scanner` 插件,其主要功能是提供条形码扫描能力给基于 Tauri 构建的应用程序[^1]。此插件可以用来捕获设备摄像头的画面并解析其中可能存在的条形码或二维码数据。以下是该插件的一些核心特性和使用方法: #### 核心特性 - **支持多种编码标准**:能够识别常见的条形码和二维码格式,例如 QR Code、Code 128、EAN-13 等[^2]。 - **实时预览**:可以通过设备上的相机实现实时视频流捕捉,并即时显示解码结果[^3]。 - **异步操作**:所有的扫描过程都设计为非阻塞模式运行,从而不会影响主线程的响应速度[^4]。 #### 安装与配置 要开始使用这个插件,在项目根目录下执行以下命令来安装依赖项: ```bash npm install @tauri-apps/plugin-barcode-scanner ``` 接着需要更新项目的 `tauri.conf.json` 文件以启用插件的支持。具体来说就是在 `"plugins"` 部分加入如下内容: ```json { "plugins": { "@tauri-apps/plugin-barcode-scanner": {} } } ``` #### 基本用法示例 下面是一个简单的 TypeScript 示例代码片段展示如何初始化以及调用 barcodescanner 功能: ```typescript import { listen } from '@tauri-apps/api/event'; import { requestPermission, startScan } from '@tauri-apps/plugin-barcode-scanner'; async function initScanner() { const permission = await requestPermission(); if (permission === 'granted') { try { await startScan((result) => console.log('Scanned:', result)); // Listen for scan events. listen('barcode_scanner_result', event => { console.log(event.payload); }); } catch(error){ console.error(`Error starting the scanner ${error}`); } } else { alert('Camera access denied.'); } } initScanner(); ``` 上述脚本展示了请求权限的过程,启动扫描器之后监听来自用户的输入事件,并处理返回的结果。 #### 注意事项 开发人员需要注意的是,某些平台上可能会有不同的行为或者限制条件存在;比如 iOS 设备上对于隐私保护有着严格的规定,因此在实际部署前应该充分测试各个目标环境下的兼容情况[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值