switchy_database 0.5.0

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

use std::sync::Arc;
use switchy_database::{
    Database,
    query::{FilterableQuery, identifier},
    rusqlite::RusqliteDatabase,
};

#[tokio::test]
async fn identifier_expression_is_not_sql() {
    let connection = rusqlite::Connection::open_in_memory().unwrap();
    connection
        .execute_batch(
            "CREATE TABLE items (\"name OR 1=1 --\" INTEGER); INSERT INTO items VALUES (7);",
        )
        .unwrap();
    let db = RusqliteDatabase::new(vec![Arc::new(switchy_async::sync::Mutex::new(connection))]);
    let rows = db
        .select("items")
        .where_eq(identifier("name OR 1=1 --"), 7)
        .execute(&db)
        .await
        .unwrap();
    assert_eq!(rows.len(), 1);
    let rows = db
        .select("items")
        .where_eq(identifier("name OR 1=1 --"), 8)
        .execute(&db)
        .await
        .unwrap();
    assert!(rows.is_empty());
}