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.execute("PRAGMA optimize", [])?;
Ok(())
})?;
许可证
MIT OR Apache-2.0
致谢
本 crate 基于以下优秀项目构建:
感谢 rusqlite 团队和 SQLite 团队的杰出工作!