switchy_database 0.5.0

Switchy database package
#![cfg(all(feature = "sqlite-rusqlite", feature = "schema"))]

use std::sync::Arc;
use switchy_database::{
    Database,
    rusqlite::RusqliteDatabase,
    schema::{Column, DataType},
};

#[tokio::test]
async fn cached_select_uses_recreated_table_columns() {
    let db = RusqliteDatabase::new(vec![Arc::new(switchy_async::sync::Mutex::new(
        rusqlite::Connection::open_in_memory().unwrap(),
    ))]);
    for name in ["original", "replacement", "unicode_漢字"] {
        db.create_table("recreated")
            .column(Column {
                name: name.into(),
                data_type: DataType::Text,
                nullable: false,
                auto_increment: false,
                default: None,
            })
            .execute(&db)
            .await
            .unwrap();
        db.insert("recreated")
            .value(name, "retained value")
            .execute(&db)
            .await
            .unwrap();
        let rows = db.select("recreated").execute(&db).await.unwrap();
        assert_eq!(rows.len(), 1);
        assert_eq!(
            rows[0].columns,
            vec![(name.into(), "retained value".into())]
        );
        db.drop_table("recreated").execute(&db).await.unwrap();
    }
    db.close().await.unwrap();
}