vespertide_query/sql/
delete_table.rs1use sea_query::{Alias, Table};
2
3use super::types::BuiltQuery;
4
5pub fn build_delete_table(table: &str) -> BuiltQuery {
6 let stmt = Table::drop().table(Alias::new(table)).to_owned();
7 BuiltQuery::DropTable(Box::new(stmt))
8}
9
10#[cfg(test)]
11mod tests {
12 use super::*;
13 use crate::sql::types::DatabaseBackend;
14 use insta::{assert_snapshot, with_settings};
15 use rstest::rstest;
16
17 #[rstest]
18 #[case::delete_table_postgres(
19 "delete_table_postgres",
20 DatabaseBackend::Postgres,
21 &["DROP TABLE \"users\""]
22 )]
23 #[case::delete_table_mysql(
24 "delete_table_mysql",
25 DatabaseBackend::MySql,
26 &["DROP TABLE `users`"]
27 )]
28 #[case::delete_table_sqlite(
29 "delete_table_sqlite",
30 DatabaseBackend::Sqlite,
31 &["DROP TABLE \"users\""]
32 )]
33 fn test_delete_table(
34 #[case] title: &str,
35 #[case] backend: DatabaseBackend,
36 #[case] expected: &[&str],
37 ) {
38 let result = build_delete_table("users");
39 let sql = result.build(backend);
40 for exp in expected {
41 assert!(
42 sql.contains(exp),
43 "Expected SQL to contain '{}', got: {}",
44 exp,
45 sql
46 );
47 }
48
49 with_settings!({ snapshot_suffix => format!("delete_table_{}", title) }, {
50 assert_snapshot!(sql);
51 });
52 }
53}