vespertide-query 0.1.61

Converts migration actions into SQL statements with bind parameters
Documentation
use super::types::{BuiltQuery, RawSql};

pub fn build_raw_sql(sql: String) -> BuiltQuery {
    BuiltQuery::Raw(RawSql::uniform(sql))
}

#[cfg(test)]
mod tests {
    use super::*;
    use crate::sql::types::DatabaseBackend;
    use insta::{assert_snapshot, with_settings};
    use rstest::rstest;

    #[rstest]
    #[case::raw_sql_action_postgres(
        "raw_sql_action_postgres",
        DatabaseBackend::Postgres,
        &["SELECT 1"]
    )]
    #[case::raw_sql_action_mysql(
        "raw_sql_action_mysql",
        DatabaseBackend::MySql,
        &["SELECT 1"]
    )]
    #[case::raw_sql_action_sqlite(
        "raw_sql_action_sqlite",
        DatabaseBackend::Sqlite,
        &["SELECT 1"]
    )]
    fn test_raw_sql(
        #[case] title: &str,
        #[case] backend: DatabaseBackend,
        #[case] expected: &[&str],
    ) {
        let result = build_raw_sql("SELECT 1".into());
        let sql = result.build(backend);
        for exp in expected {
            assert!(
                sql.contains(exp),
                "Expected SQL to contain '{}', got: {}",
                exp,
                sql
            );
        }

        with_settings!({ snapshot_suffix => format!("raw_sql_{}", title) }, {
            assert_snapshot!(sql);
        });
    }
}