#sqlite #migration #connection #rusqlite #apps #wrapper #opinionated

sqliter

为rusqlite提供的具有观点的异步连接/迁移处理器,简化了小型应用程序中使用SQLite数据库的工作

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次下载

MIT 许可证

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