vespertide-query 0.2.1

Converts migration actions into SQL statements with bind parameters
Documentation
#[cfg(test)]
mod tests {
    use crate::sql::types::DatabaseBackend;
    use crate::sql::{BuiltQuery, RawSql};
    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 = BuiltQuery::Raw(RawSql::uniform("SELECT 1".into()));
        let sql = result.build(backend);
        for exp in expected {
            assert!(
                sql.contains(exp),
                "Expected SQL to contain '{exp}', got: {sql}"
            );
        }

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