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