8个版本 (5个重大更新)
0.5.1 | 2023年11月27日 |
---|---|
0.5.0 | 2023年11月26日 |
0.4.0 | 2023年8月31日 |
0.3.0 | 2023年5月28日 |
0.0.1 | 2023年4月23日 |
#2370 在 数据库接口
每月40次下载
25KB
443 行
Sqliter
围绕Rusqlite的一个小型、具有观点的包装器,为您处理迁移,并公开了一小部分配置来实例化SQLite连接。
lib.rs
:
Sqliter
轻松连接和迁移SQLite数据库。
基于async_rusqlite
构建;这是一个运行时无关的Rusqlite薄异步包装器。
use sqliter::{ Connection, ConnectionBuilder, ConnectionBuilderError };
async fn open_connection() -> Result<Connection, ConnectionBuilderError> {
// This must never change for a given app; the database won't open if
// the app_id does not equal the one we have set here.
const APP_ID: i32 = 1337;
ConnectionBuilder::new()
.app_id(APP_ID)
// Migrations should never change; this list will simply grow over time
// To accomodate the updates needed as the app matures.
.add_migration(1, |conn| {
conn.execute("CREATE TABLE user ( id INTEGER PRIMARY KEY )", ())
.map(|_| ())
})
.add_migration(2, |conn| {
conn.execute("ALTER TABLE user ADD COLUMN name TEXT NOT NULL DEFAULT 'Unknown'", ())
.map(|_| ())
})
.open_in_memory()
.await
}
let conn = open_connection().await?;
conn.call(|conn| {
conn.execute("INSERT INTO user (name) VALUES ('James')", ())
}).await?;
依赖项
~22MB
~427K SLoC