A Tauri plugin for SQLite database access with connection management. This plugin depends on SQLx and enforces pragmatic policies for connection management.
This project is organized as a Cargo workspace with the following structure:
tauri-plugin-sqlite/
├── crates/
│ └── sqlx-sqlite-conn-mgr/ # SQLx SQLite connection pool manager
│ ├── src/
│ │ └── lib.rs
│ └── Cargo.toml
├── src/ # Tauri plugin implementation
│ ├── commands.rs # Plugin commands
│ ├── error.rs # Error types
│ ├── lib.rs # Main plugin code
│ └── models.rs # Data models
├── guest-js/ # JavaScript/TypeScript bindings
│ ├── index.ts
│ └── tsconfig.json
├── permissions/ # Permission definitions (mostly generated)
├── dist-js/ # Compiled JS (generated)
├── Cargo.toml # Workspace configuration
├── package.json # NPM package configuration
└── build.rs # Build script
A pure Rust module with no dependencies on Tauri or its plugin architecture. It provides connection management for SQLite databases using SQLx. It's designed to be published as a standalone crate in the future with minimal changes.
See crates/sqlx-sqlite-conn-mgr/README.md
for more details.
The main plugin provides a Tauri integration layer that exposes SQLite functionality
to Tauri applications. It uses the sqlx-sqlite-conn-mgr module internally.
-
Install NPM dependencies:
npm install
-
Build the TypeScript bindings:
npm run build
-
Build the Rust plugin:
cargo build
Run Rust tests:
cargo testnpm run standardsAdd the plugin to your Tauri application's Cargo.toml:
[dependencies]
tauri-plugin-sqlite = { path = "../path/to/tauri-plugin-sqlite" }Initialize the plugin in your Tauri app:
fn main() {
tauri::Builder::default()
.plugin(tauri_plugin_sqlite::init())
.run(tauri::generate_context!())
.expect("error while running tauri application");
}Install the JavaScript package in your frontend:
npm install @silvermine/tauri-plugin-sqliteUse the plugin from JavaScript:
// TODO: Add real examples once we have decided on the plugin API
import { hello } from '@silvermine/tauri-plugin-sqlite';
// Call the hello command
const greeting = await hello('World');
console.log(greeting); // "Hello, World! This is the SQLite plugin."This project follows the Silvermine standardization guidelines. Key standards include:
- EditorConfig: Consistent editor settings across the team
- Markdownlint: Markdown linting for documentation
- Commitlint: Conventional commit message format
- Code Style: 3-space indentation, LF line endings
npm run standardsMIT
Contributions are welcome! Please follow the established coding standards and commit message conventions.