Skip to content

Commit e679e3e

Browse files
committed
Add Mysql syntax to DropTable builder
1 parent 824ea78 commit e679e3e

File tree

3 files changed

+126
-71
lines changed

3 files changed

+126
-71
lines changed

src/drop_table/drop_table.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ impl DropTable {
3838
/// ### Example 1
3939
///
4040
///```
41-
/// # #[cfg(not(feature = "postgresql"))]
41+
/// # #[cfg(not(any(feature = "postgresql", feature = "mysql")))]
4242
/// # {
4343
/// # use sql_query_builder as sql;
4444
/// let query = sql::DropTable::new()
@@ -57,12 +57,12 @@ impl DropTable {
5757
/// DROP TABLE orders
5858
/// ```
5959
///
60-
/// ### Example 2 `crate features postgresql only`
60+
/// ### Example 2 `crate features postgresql and mysql only`
6161
///
6262
/// Multiples call will concatenates all values
6363
///
6464
///```
65-
/// # #[cfg(feature = "postgresql")]
65+
/// # #[cfg(any(feature = "postgresql", feature = "mysql"))]
6666
/// # {
6767
/// # use sql_query_builder as sql;
6868
/// let query = sql::DropTable::new()
@@ -90,7 +90,7 @@ impl DropTable {
9090
/// ### Example 1
9191
///
9292
/// ```
93-
/// # #[cfg(not(feature = "postgresql"))]
93+
/// # #[cfg(not(any(feature = "postgresql", feature = "mysql")))]
9494
/// # {
9595
/// # use sql_query_builder as sql;
9696
/// let query = sql::DropTable::new()
@@ -109,12 +109,12 @@ impl DropTable {
109109
/// DROP TABLE IF EXISTS orders
110110
/// ```
111111
///
112-
/// ### Example 2 `crate features postgresql only`
112+
/// ### Example 2 `crate features postgresql and mysql only`
113113
///
114114
/// Multiples call will concatenates all values
115115
///
116116
/// ```
117-
/// # #[cfg(feature = "postgresql")]
117+
/// # #[cfg(any(feature = "postgresql", feature = "mysql"))]
118118
/// # {
119119
/// # use sql_query_builder as sql;
120120
/// let query = sql::DropTable::new()

src/drop_table/drop_table_internal.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ impl DropTable {
2626
"".to_string()
2727
};
2828

29-
let table_names = if cfg!(any(feature = "postgresql")) {
29+
let table_names = if cfg!(any(feature = "postgresql", feature = "mysql")) {
3030
self
3131
._drop_table
3232
.iter()

tests/command_drop_table_spec.rs

Lines changed: 119 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,60 @@
1+
mod full_api {
2+
use pretty_assertions::assert_eq;
3+
use sql_query_builder as sql;
4+
5+
// SQL Standard
6+
#[test]
7+
fn sql_standard_with_all_methods() {
8+
let query = sql::DropTable::new().drop_table("users_name_idx").as_string();
9+
10+
let expected_query = "DROP TABLE users_name_idx";
11+
12+
assert_eq!(expected_query, query);
13+
}
14+
15+
#[cfg(feature = "postgresql")]
16+
#[test]
17+
fn postgres_with_all_methods() {
18+
let query = sql::DropTable::new()
19+
// at least one of methods
20+
.drop_table("users_name_idx")
21+
.drop_table_if_exists("users_login_idx")
22+
.as_string();
23+
24+
let expected_query = "DROP TABLE IF EXISTS users_name_idx, users_login_idx";
25+
26+
assert_eq!(expected_query, query);
27+
}
28+
29+
#[cfg(feature = "sqlite")]
30+
#[test]
31+
fn sqlite_with_all_methods() {
32+
let query = sql::DropTable::new()
33+
// at least one of methods
34+
.drop_table("users_name_idx")
35+
.drop_table_if_exists("users_login_idx")
36+
.as_string();
37+
38+
let expected_query = "DROP TABLE IF EXISTS users_login_idx";
39+
40+
assert_eq!(expected_query, query);
41+
}
42+
43+
#[cfg(feature = "mysql")]
44+
#[test]
45+
fn mysql_with_all_methods() {
46+
let query = sql::DropTable::new()
47+
// at least one of methods
48+
.drop_table("users_name_idx")
49+
.drop_table_if_exists("users_login_idx")
50+
.as_string();
51+
52+
let expected_query = "DROP TABLE IF EXISTS users_name_idx, users_login_idx";
53+
54+
assert_eq!(expected_query, query);
55+
}
56+
}
57+
158
mod builder_features {
259
use pretty_assertions::assert_eq;
360
use sql_query_builder as sql;
@@ -26,7 +83,7 @@ mod builder_features {
2683
assert_eq!(expected_query, query);
2784
}
2885

29-
#[cfg(not(feature = "postgresql"))]
86+
#[cfg(not(any(feature = "postgresql", feature = "mysql")))]
3087
#[test]
3188
fn drop_table_builder_should_be_able_to_conditionally_add_clauses() {
3289
let mut drop_table = sql::DropTable::new().drop_table("orders");
@@ -41,7 +98,7 @@ mod builder_features {
4198
assert_eq!(expected_query, query);
4299
}
43100

44-
#[cfg(feature = "postgresql")]
101+
#[cfg(any(feature = "postgresql", feature = "mysql"))]
45102
#[test]
46103
fn drop_table_builder_should_be_able_to_conditionally_add_clauses() {
47104
let mut drop_table = sql::DropTable::new().drop_table("orders");
@@ -56,7 +113,7 @@ mod builder_features {
56113
assert_eq!(expected_query, query);
57114
}
58115

59-
#[cfg(not(feature = "postgresql"))]
116+
#[cfg(not(any(feature = "postgresql", feature = "mysql")))]
60117
#[test]
61118
fn drop_table_builder_should_be_cloneable() {
62119
let drop_users = sql::DropTable::new().drop_table("users");
@@ -69,7 +126,7 @@ mod builder_features {
69126
assert_eq!(expected_drop_users_and_orders, drop_users_and_orders.as_string());
70127
}
71128

72-
#[cfg(feature = "postgresql")]
129+
#[cfg(any(feature = "postgresql", feature = "mysql"))]
73130
#[test]
74131
fn drop_table_builder_should_be_cloneable() {
75132
let drop_users = sql::DropTable::new().drop_table("users");
@@ -130,18 +187,18 @@ mod builder_methods {
130187

131188
#[test]
132189
fn method_debug_should_print_at_console_in_a_human_readable_format() {
133-
let query = sql::DropTable::new().drop_table_if_exists("users").debug().as_string();
190+
let query = sql::DropTable::new().drop_table("users").debug().as_string();
134191

135-
let expected_query = "DROP TABLE IF EXISTS users";
192+
let expected_query = "DROP TABLE users";
136193

137194
assert_eq!(expected_query, query);
138195
}
139196

140197
#[test]
141198
fn method_print_should_print_in_one_line_the_current_state_of_builder() {
142-
let query = sql::DropTable::new().drop_table_if_exists("users").print().as_string();
199+
let query = sql::DropTable::new().drop_table("users").print().as_string();
143200

144-
let expected_query = "DROP TABLE IF EXISTS users";
201+
let expected_query = "DROP TABLE users";
145202

146203
assert_eq!(expected_query, query);
147204
}
@@ -237,28 +294,50 @@ mod method_drop_table {
237294
assert_eq!(expected_query, query);
238295
}
239296

240-
#[cfg(not(feature = "postgresql"))]
241297
#[test]
242-
fn method_drop_table_should_overrides_previous_value_on_consecutive_calls() {
298+
fn method_drop_table_should_trim_space_of_the_argument() {
299+
let query = sql::DropTable::new().drop_table(" films ").as_string();
300+
let expected_query = "DROP TABLE films";
301+
302+
assert_eq!(expected_query, query);
303+
}
304+
305+
#[test]
306+
fn method_raw_before_should_add_raw_sql_before_method_drop_table() {
243307
let query = sql::DropTable::new()
308+
.raw_before(sql::DropTableParams::DropTable, "/* drop command */")
244309
.drop_table("films")
245-
.drop_table("series")
246310
.as_string();
311+
let expected_query = "/* drop command */ DROP TABLE films";
247312

248-
let expected_query = "DROP TABLE series";
313+
assert_eq!(expected_query, query);
314+
}
315+
316+
#[test]
317+
fn method_raw_after_should_add_raw_sql_after_method_drop_table() {
318+
let query = sql::DropTable::new()
319+
.drop_table("films")
320+
.raw_after(sql::DropTableParams::DropTable, "RESTRICT")
321+
.as_string();
322+
let expected_query = "DROP TABLE films RESTRICT";
249323

250324
assert_eq!(expected_query, query);
251325
}
252326

327+
#[cfg(not(any(feature = "postgresql", feature = "mysql")))]
253328
#[test]
254-
fn method_drop_table_should_trim_space_of_the_argument() {
255-
let query = sql::DropTable::new().drop_table(" films ").as_string();
256-
let expected_query = "DROP TABLE films";
329+
fn method_drop_table_should_overrides_previous_value_on_consecutive_calls() {
330+
let query = sql::DropTable::new()
331+
.drop_table("films")
332+
.drop_table("series")
333+
.as_string();
334+
335+
let expected_query = "DROP TABLE series";
257336

258337
assert_eq!(expected_query, query);
259338
}
260339

261-
#[cfg(not(feature = "postgresql"))]
340+
#[cfg(not(any(feature = "postgresql", feature = "mysql")))]
262341
#[test]
263342
fn method_drop_table_should_not_accumulate_arguments_with_the_same_content() {
264343
let query = sql::DropTable::new()
@@ -270,24 +349,29 @@ mod method_drop_table {
270349
assert_eq!(expected_query, query);
271350
}
272351

352+
#[cfg(any(feature = "postgresql", feature = "mysql"))]
273353
#[test]
274-
fn method_raw_before_should_add_raw_sql_before_method_drop_table() {
354+
fn method_drop_table_should_accumulate_values_on_consecutive_calls() {
275355
let query = sql::DropTable::new()
276-
.raw_before(sql::DropTableParams::DropTable, "/* drop command */")
277356
.drop_table("films")
357+
.drop_table("series")
278358
.as_string();
279-
let expected_query = "/* drop command */ DROP TABLE films";
359+
360+
let expected_query = "DROP TABLE films, series";
280361

281362
assert_eq!(expected_query, query);
282363
}
283364

365+
#[cfg(any(feature = "postgresql", feature = "mysql"))]
284366
#[test]
285-
fn method_raw_after_should_add_raw_sql_after_method_drop_table() {
367+
fn method_drop_table_should_not_accumulate_values_when_expression_is_empty() {
286368
let query = sql::DropTable::new()
287-
.drop_table("films")
288-
.raw_after(sql::DropTableParams::DropTable, "RESTRICT")
369+
.drop_table("")
370+
.drop_table("series")
371+
.drop_table("")
289372
.as_string();
290-
let expected_query = "DROP TABLE films RESTRICT";
373+
374+
let expected_query = "DROP TABLE series";
291375

292376
assert_eq!(expected_query, query);
293377
}
@@ -305,19 +389,6 @@ mod method_drop_table_if_exists {
305389
assert_eq!(expected_query, query);
306390
}
307391

308-
#[cfg(not(feature = "postgresql"))]
309-
#[test]
310-
fn method_drop_table_if_exists_should_overrides_previous_value_on_consecutive_calls() {
311-
let query = sql::DropTable::new()
312-
.drop_table_if_exists("films")
313-
.drop_table_if_exists("series")
314-
.as_string();
315-
316-
let expected_query = "DROP TABLE IF EXISTS series";
317-
318-
assert_eq!(expected_query, query);
319-
}
320-
321392
#[test]
322393
fn method_drop_table_if_exists_should_trim_space_of_the_argument() {
323394
let query = sql::DropTable::new().drop_table_if_exists(" films ").as_string();
@@ -326,18 +397,6 @@ mod method_drop_table_if_exists {
326397
assert_eq!(expected_query, query);
327398
}
328399

329-
#[cfg(not(feature = "postgresql"))]
330-
#[test]
331-
fn method_drop_table_if_exists_should_not_accumulate_arguments_with_the_same_content() {
332-
let query = sql::DropTable::new()
333-
.drop_table_if_exists("films")
334-
.drop_table_if_exists("films")
335-
.as_string();
336-
let expected_query = "DROP TABLE IF EXISTS films";
337-
338-
assert_eq!(expected_query, query);
339-
}
340-
341400
#[test]
342401
fn method_raw_before_should_add_raw_sql_before_method_drop_table_if_exists() {
343402
let query = sql::DropTable::new()
@@ -359,38 +418,33 @@ mod method_drop_table_if_exists {
359418

360419
assert_eq!(expected_query, query);
361420
}
362-
}
363-
364-
#[cfg(feature = "postgresql")]
365-
mod postgres_feature_flag {
366-
use pretty_assertions::assert_eq;
367-
use sql_query_builder as sql;
368421

422+
#[cfg(not(any(feature = "postgresql", feature = "mysql")))]
369423
#[test]
370-
fn method_drop_table_should_accumulate_values_on_consecutive_calls() {
424+
fn method_drop_table_if_exists_should_overrides_previous_value_on_consecutive_calls() {
371425
let query = sql::DropTable::new()
372-
.drop_table("films")
373-
.drop_table("series")
426+
.drop_table_if_exists("films")
427+
.drop_table_if_exists("series")
374428
.as_string();
375429

376-
let expected_query = "DROP TABLE films, series";
430+
let expected_query = "DROP TABLE IF EXISTS series";
377431

378432
assert_eq!(expected_query, query);
379433
}
380434

435+
#[cfg(not(any(feature = "postgresql", feature = "mysql")))]
381436
#[test]
382-
fn method_drop_table_should_not_accumulate_values_when_expression_is_empty() {
437+
fn method_drop_table_if_exists_should_not_accumulate_arguments_with_the_same_content() {
383438
let query = sql::DropTable::new()
384-
.drop_table("")
385-
.drop_table("series")
386-
.drop_table("")
439+
.drop_table_if_exists("films")
440+
.drop_table_if_exists("films")
387441
.as_string();
388-
389-
let expected_query = "DROP TABLE series";
442+
let expected_query = "DROP TABLE IF EXISTS films";
390443

391444
assert_eq!(expected_query, query);
392445
}
393446

447+
#[cfg(any(feature = "postgresql", feature = "mysql"))]
394448
#[test]
395449
fn method_drop_table_if_exists_should_accumulate_values_on_consecutive_calls() {
396450
let query = sql::DropTable::new()
@@ -403,6 +457,7 @@ mod postgres_feature_flag {
403457
assert_eq!(expected_query, query);
404458
}
405459

460+
#[cfg(any(feature = "postgresql", feature = "mysql"))]
406461
#[test]
407462
fn method_drop_table_if_exists_should_not_accumulate_values_when_expression_is_empty() {
408463
let query = sql::DropTable::new()

0 commit comments

Comments
 (0)