vespertide_query/sql/
raw_sql.rs1use super::types::{BuiltQuery, RawSql};
2
3pub fn build_raw_sql(sql: String) -> BuiltQuery {
4 BuiltQuery::Raw(RawSql::uniform(sql))
5}
6
7#[cfg(test)]
8mod tests {
9 use super::*;
10 use crate::sql::types::DatabaseBackend;
11 use insta::{assert_snapshot, with_settings};
12 use rstest::rstest;
13
14 #[rstest]
15 #[case::raw_sql_action_postgres(
16 "raw_sql_action_postgres",
17 DatabaseBackend::Postgres,
18 &["SELECT 1"]
19 )]
20 #[case::raw_sql_action_mysql(
21 "raw_sql_action_mysql",
22 DatabaseBackend::MySql,
23 &["SELECT 1"]
24 )]
25 #[case::raw_sql_action_sqlite(
26 "raw_sql_action_sqlite",
27 DatabaseBackend::Sqlite,
28 &["SELECT 1"]
29 )]
30 fn test_raw_sql(
31 #[case] title: &str,
32 #[case] backend: DatabaseBackend,
33 #[case] expected: &[&str],
34 ) {
35 let result = build_raw_sql("SELECT 1".into());
36 let sql = result.build(backend);
37 for exp in expected {
38 assert!(
39 sql.contains(exp),
40 "Expected SQL to contain '{}', got: {}",
41 exp,
42 sql
43 );
44 }
45
46 with_settings!({ snapshot_suffix => format!("raw_sql_{}", title) }, {
47 assert_snapshot!(sql);
48 });
49 }
50}