unistore-sqlite

Crates.iounistore-sqlite
lib.rsunistore-sqlite
version0.1.0
created_at2026-01-20 01:42:37.420554+00
updated_at2026-01-20 01:42:37.420554+00
descriptionSQLite embedded database capability for UniStore
homepagehttps://github.com/yangbo1317/unistore
repositoryhttps://github.com/yangbo1317/unistore
max_upload_size
id2055635
size107,300
(yangbo1317)

documentation

https://docs.rs/unistore-sqlite

README

unistore-sqlite

UniStore SQLite 嵌入式数据库能力,提供类型安全的数据库操作。

概述

unistore-sqlite 提供:

  • 零配置启动,开箱即用
  • 类型安全的查询构建器
  • Schema 迁移支持
  • 事务支持(RAII 自动回滚)
  • 与 UniStore 生命周期集成

安装

[dependencies]
unistore-sqlite = "0.1"

快速开始

use unistore_sqlite::EmbeddedDb;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    // 打开或创建数据库
    let db = EmbeddedDb::open("my_app")?;
    
    // 定义表结构
    db.migrate(|m| {
        m.version(1, "创建用户表", |s| {
            s.create_table("users", |t| {
                t.id()
                 .text_not_null("name")
                 .text("email")
                 .created_at();
            })
        });
    })?;
    
    // 插入数据
    let id = db.insert("users")
        .set("name", "Alice")
        .set("email", "alice@example.com")
        .execute()?;
    
    // 查询数据
    let users = db.select("users")
        .filter("id = ?", id)
        .fetch_all()?;
    
    // 更新数据
    db.update("users")
        .set("name", "Alice Smith")
        .filter("id = ?", id)
        .execute()?;
    
    // 删除数据
    db.delete("users")
        .filter("id = ?", id)
        .execute()?;
    
    Ok(())
}

事务

db.with_transaction(|tx| {
    tx.execute("INSERT INTO users (name) VALUES (?)", &["Bob"])?;
    tx.execute("INSERT INTO logs (action) VALUES (?)", &["created user"])?;
    Ok(())
})?;
// 自动提交,出错自动回滚

配置预设

// 内存数据库(测试用)
let db = EmbeddedDb::memory()?;

// 性能优先
let config = SqliteConfig::performance();

// 持久性优先
let config = SqliteConfig::durable();

底层访问

需要直接使用 rusqlite 时:

db.with_connection(|conn| {
    // conn 是 &rusqlite::Connection
    conn.execute("PRAGMA optimize", [])?;
    Ok(())
})?;

许可证

MIT OR Apache-2.0

致谢

本 crate 基于以下优秀项目构建:

  • rusqlite - Rust 的 SQLite 绑定
  • SQLite - 世界上使用最广泛的数据库引擎

感谢 rusqlite 团队和 SQLite 团队的杰出工作!

Commit count: 0

cargo fmt