tauri-plugin-rusqlite 0.4.4

Tauri Plugin based on Rusqlite
Documentation
use crate::{error::Error, types::Result};
use rusqlite::Connection;

pub fn execute_batch(connection: &Connection, batch_sql: String) -> Result<()> {
    connection
        .execute_batch(&batch_sql)
        .map_err(|error| Error::Database(error.to_string()))?;
    Ok(())
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn execute_batch_test() {
        let connection = Connection::open_in_memory().unwrap();
        let batch_sql = r#"
            CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT NOT NULL);
            INSERT INTO users (name) VALUES ('Alice');
            "#
        .to_string();
        execute_batch(&connection, batch_sql).unwrap();

        let select_sql = "SELECT * FROM users";
        let mut statement = connection.prepare(select_sql).unwrap();
        let mut rows = statement.query([]).unwrap();

        let first_row = rows.next().unwrap().unwrap();

        assert_eq!(first_row.get::<_, i64>(0).unwrap(), 1);
        assert_eq!(first_row.get::<_, String>(1).unwrap(), "Alice");

        assert!(rows.next().unwrap().is_none());
    }

    #[test]
    fn execute_batch_drop_table_test() {
        let connection = Connection::open_in_memory().unwrap();
        let create_table_sql = r#"
            CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT NOT NULL);
            INSERT INTO users (name) VALUES ('Alice');
            "#
        .to_string();
        let result = execute_batch(&connection, create_table_sql);
        assert!(result.is_ok());

        let drop_table_sql = "DROP TABLE users;".to_string();
        let result = execute_batch(&connection, drop_table_sql);
        assert!(result.is_ok());
    }
}