spin-sqlite-connection

Crates.iospin-sqlite-connection
lib.rsspin-sqlite-connection
version0.2.3
created_at2024-05-31 06:26:32.455225+00
updated_at2025-03-17 09:31:39.978919+00
descriptionSpin Sqlite Connection abstraction
homepage
repositoryhttps://github.com/paulusminus/lipl-storage-spin
max_upload_size
id1257722
size34,078
Paul Min (paulusminus)

documentation

README

spin-sqlite-connection

Motivation

I wrote this crate because i wanted to test sqlite database operations in a Fermyon spin application.

This crate uses conditional compilation. The spin-sdk crate is used for database operation if target-family = "wasm", else the rusqlite crate is used. Then rusqlite connection uses a in-memory database which is used in testing.

Example

    const MIGRATIONS: &str = "CREATE TABLE IF NOT EXISTS user (id TEXT PRIMARY KEY, name TEXT NOT NULL, password TEXT NOT NULL);"
    const INSERT: &str = "INSERT INTO user (id, name, password) VALUES ('LKtQNwbBsQd9aXgMbmptKP', 'paul', 'password');";

    let connection = DbConnection::<Box<dyn std::error::Error>>::try_open_default(Some(MIGRATIONS)).unwrap();
    let count = connection.execute(INSERT, &[]).unwrap();
    assert_eq!(count, 1);
Commit count: 255

cargo fmt