1
+ #[ cfg( any( feature = "postgresql" , feature = "sqlite" , feature = "mysql" ) ) ]
2
+ mod full_api {
3
+ use pretty_assertions:: assert_eq;
4
+ use sql_query_builder as sql;
5
+
6
+ #[ cfg( feature = "postgresql" ) ]
7
+ #[ test]
8
+ fn postgres_with_all_methods ( ) {
9
+ let query = sql:: CreateTable :: new ( )
10
+ // at least one of methods
11
+ . create_table ( "users" )
12
+ . create_table_if_not_exists ( "users" )
13
+ // optional methods
14
+ . column ( "id serial, login varchar(100) not null" )
15
+ . primary_key ( "(id)" )
16
+ . foreign_key ( "(address_id) references addresses(id)" )
17
+ . constraint ( "login users_login_key unique(login)" )
18
+ . as_string ( ) ;
19
+
20
+ let expected_query = "\
21
+ CREATE TABLE IF NOT EXISTS users (\
22
+ id serial, login varchar(100) not null, \
23
+ PRIMARY KEY(id), \
24
+ CONSTRAINT login users_login_key unique(login), \
25
+ FOREIGN KEY(address_id) references addresses(id)\
26
+ )\
27
+ ";
28
+
29
+ assert_eq ! ( expected_query, query) ;
30
+ }
31
+
32
+ #[ cfg( feature = "sqlite" ) ]
33
+ #[ test]
34
+ fn sqlite_with_all_methods ( ) {
35
+ let query = sql:: CreateTable :: new ( )
36
+ // at least one of methods
37
+ . create_table ( "users" )
38
+ . create_table_if_not_exists ( "users" )
39
+ // required methods
40
+ . column ( "id integer, login varchar(100) not null" )
41
+ // optional methods
42
+ . primary_key ( "(id)" )
43
+ . foreign_key ( "(address_id) references addresses(id)" )
44
+ . constraint ( "login users_login_key unique(login)" )
45
+ . as_string ( ) ;
46
+
47
+ let expected_query = "\
48
+ CREATE TABLE IF NOT EXISTS users (\
49
+ id integer, login varchar(100) not null, \
50
+ PRIMARY KEY(id), \
51
+ CONSTRAINT login users_login_key unique(login), \
52
+ FOREIGN KEY(address_id) references addresses(id)\
53
+ )\
54
+ ";
55
+
56
+ assert_eq ! ( expected_query, query) ;
57
+ }
58
+
59
+ #[ cfg( feature = "mysql" ) ]
60
+ #[ test]
61
+ fn mysql_with_all_methods ( ) {
62
+ let query = sql:: CreateTable :: new ( )
63
+ // at least one of methods
64
+ . create_table ( "users" )
65
+ . create_table_if_not_exists ( "users" )
66
+ // optional methods
67
+ . column ( "id int not null auto_increment, login varchar(100) not null" )
68
+ . primary_key ( "(id)" )
69
+ . foreign_key ( "(address_id) references addresses(id)" )
70
+ . constraint ( "login users_login_key unique(login)" )
71
+ . as_string ( ) ;
72
+
73
+ let expected_query = "\
74
+ CREATE TABLE IF NOT EXISTS users (\
75
+ id int not null auto_increment, login varchar(100) not null, \
76
+ PRIMARY KEY(id), \
77
+ CONSTRAINT login users_login_key unique(login), \
78
+ FOREIGN KEY(address_id) references addresses(id)\
79
+ )\
80
+ ";
81
+
82
+ assert_eq ! ( expected_query, query) ;
83
+ }
84
+ }
85
+
1
86
mod builder_features {
2
87
use pretty_assertions:: assert_eq;
3
88
use sql_query_builder as sql;
4
89
5
90
#[ test]
6
91
fn create_table_builder_should_be_displayable ( ) {
7
- let create_table = sql:: CreateTable :: new ( )
8
- . create_table ( "orders" )
9
- . column ( "id serial not null" ) ;
92
+ let create_table = sql:: CreateTable :: new ( ) . create_table ( "orders" ) . column ( "id int not null" ) ;
10
93
11
94
println ! ( "{}" , create_table) ;
12
95
13
96
let query = create_table. as_string ( ) ;
14
- let expected_query = "CREATE TABLE orders (id serial not null)" ;
97
+ let expected_query = "CREATE TABLE orders (id int not null)" ;
15
98
16
99
assert_eq ! ( expected_query, query) ;
17
100
}
18
101
19
102
#[ test]
20
103
fn create_table_builder_should_be_debuggable ( ) {
21
- let create_table = sql:: CreateTable :: new ( )
22
- . create_table ( "orders" )
23
- . column ( "id serial not null" ) ;
104
+ let create_table = sql:: CreateTable :: new ( ) . create_table ( "orders" ) . column ( "id int not null" ) ;
24
105
25
106
println ! ( "{:?}" , create_table) ;
26
107
27
- let expected_query = "CREATE TABLE orders (id serial not null)" ;
108
+ let expected_query = "CREATE TABLE orders (id int not null)" ;
28
109
let query = create_table. as_string ( ) ;
29
110
30
111
assert_eq ! ( expected_query, query) ;
@@ -33,7 +114,7 @@ mod builder_features {
33
114
#[ test]
34
115
fn create_table_builder_should_be_cloneable ( ) {
35
116
let basic_table = sql:: CreateTable :: new ( )
36
- . column ( "id serial " )
117
+ . column ( "id int " )
37
118
. column ( "created_at timestamp" )
38
119
. column ( "updated_at timestamp" ) ;
39
120
@@ -45,7 +126,7 @@ mod builder_features {
45
126
46
127
let expected_users_table = "\
47
128
CREATE TABLE users (\
48
- id serial , \
129
+ id int , \
49
130
created_at timestamp, \
50
131
updated_at timestamp, \
51
132
login varchar(40)\
@@ -60,7 +141,7 @@ mod builder_features {
60
141
61
142
let expected_orders_table = "\
62
143
CREATE TABLE orders (\
63
- id serial , \
144
+ id int , \
64
145
created_at timestamp, \
65
146
updated_at timestamp, \
66
147
name varchar(200)\
@@ -76,11 +157,11 @@ mod builder_features {
76
157
let mut create_table = sql:: CreateTable :: new ( ) . create_table ( "orders" ) ;
77
158
78
159
if true {
79
- create_table = create_table. column ( "id serial " ) ;
160
+ create_table = create_table. column ( "id int " ) ;
80
161
}
81
162
82
163
let query = create_table. as_string ( ) ;
83
- let expected_query = "CREATE TABLE orders (id serial )" ;
164
+ let expected_query = "CREATE TABLE orders (id int )" ;
84
165
85
166
assert_eq ! ( expected_query, query) ;
86
167
}
@@ -92,7 +173,7 @@ mod builder_features {
92
173
}
93
174
94
175
fn columns ( select : sql:: CreateTable ) -> sql:: CreateTable {
95
- select. column ( "id serial " ) . column ( "login varchar(40)" )
176
+ select. column ( "id int " ) . column ( "login varchar(40)" )
96
177
}
97
178
98
179
fn constraint ( select : sql:: CreateTable ) -> sql:: CreateTable {
@@ -114,7 +195,7 @@ mod builder_features {
114
195
115
196
let expected_query = "\
116
197
CREATE TABLE users (\
117
- id serial , \
198
+ id int , \
118
199
login varchar(40), \
119
200
CONSTRAINT users_id_key primary key(id), \
120
201
CONSTRAINT users_login_key unique(login)\
@@ -149,7 +230,7 @@ mod builder_methods {
149
230
fn method_debug_should_print_at_console_in_a_human_readable_format ( ) {
150
231
let query = sql:: CreateTable :: new ( )
151
232
. create_table_if_not_exists ( "users" )
152
- . column ( "id serial not null" )
233
+ . column ( "id int not null" )
153
234
. column ( "login varchar(40) not null" )
154
235
. constraint ( "users_id_key primary key(id)" )
155
236
. constraint ( "users_login_key unique(login)" )
@@ -158,7 +239,7 @@ mod builder_methods {
158
239
159
240
let expected_query = "\
160
241
CREATE TABLE IF NOT EXISTS users (\
161
- id serial not null, \
242
+ id int not null, \
162
243
login varchar(40) not null, \
163
244
CONSTRAINT users_id_key primary key(id), \
164
245
CONSTRAINT users_login_key unique(login)\
@@ -172,7 +253,7 @@ mod builder_methods {
172
253
fn method_print_should_print_in_one_line_the_current_state_of_builder ( ) {
173
254
let query = sql:: CreateTable :: new ( )
174
255
. create_table_if_not_exists ( "users" )
175
- . column ( "id serial not null" )
256
+ . column ( "id int not null" )
176
257
. column ( "login varchar(40) not null" )
177
258
. constraint ( "users_id_key primary key(id)" )
178
259
. constraint ( "users_login_key unique(login)" )
@@ -181,7 +262,7 @@ mod builder_methods {
181
262
182
263
let expected_query = "\
183
264
CREATE TABLE IF NOT EXISTS users (\
184
- id serial not null, \
265
+ id int not null, \
185
266
login varchar(40) not null, \
186
267
CONSTRAINT users_id_key primary key(id), \
187
268
CONSTRAINT users_login_key unique(login)\
@@ -206,10 +287,10 @@ mod builder_methods {
206
287
fn method_raw_should_accumulate_values_on_consecutive_calls ( ) {
207
288
let query = sql:: CreateTable :: new ( )
208
289
. raw ( "create table local temp users (" )
209
- . raw ( "id serial )" )
290
+ . raw ( "id int )" )
210
291
. as_string ( ) ;
211
292
212
- let expected_query = "create table local temp users ( id serial )" ;
293
+ let expected_query = "create table local temp users ( id int )" ;
213
294
214
295
assert_eq ! ( expected_query, query) ;
215
296
}
@@ -219,11 +300,11 @@ mod builder_methods {
219
300
let query = sql:: CreateTable :: new ( )
220
301
. raw ( "" )
221
302
. raw ( "create table local temp users (" )
222
- . raw ( "id serial )" )
303
+ . raw ( "id int )" )
223
304
. raw ( "" )
224
305
. as_string ( ) ;
225
306
226
- let expected_query = "create table local temp users ( id serial )" ;
307
+ let expected_query = "create table local temp users ( id int )" ;
227
308
228
309
assert_eq ! ( expected_query, query) ;
229
310
}
@@ -255,19 +336,19 @@ mod builder_methods {
255
336
#[ test]
256
337
fn method_raw_after_should_trim_space_of_the_argument ( ) {
257
338
let query = sql:: CreateTable :: new ( )
258
- . raw_after ( sql:: CreateTableParams :: Column , " id serial not null " )
339
+ . raw_after ( sql:: CreateTableParams :: Column , " id int not null " )
259
340
. as_string ( ) ;
260
- let expected_query = "(id serial not null)" ;
341
+ let expected_query = "(id int not null)" ;
261
342
262
343
assert_eq ! ( expected_query, query) ;
263
344
}
264
345
265
346
#[ test]
266
347
fn method_raw_before_should_trim_space_of_the_argument ( ) {
267
348
let query = sql:: CreateTable :: new ( )
268
- . raw_before ( sql:: CreateTableParams :: Column , " id serial not null " )
349
+ . raw_before ( sql:: CreateTableParams :: Column , " id int not null " )
269
350
. as_string ( ) ;
270
- let expected_query = "(id serial not null)" ;
351
+ let expected_query = "(id int not null)" ;
271
352
272
353
assert_eq ! ( expected_query, query) ;
273
354
}
@@ -331,26 +412,26 @@ mod method_column {
331
412
332
413
#[ test]
333
414
fn method_raw_after_should_add_raw_sql_after_column_parameter ( ) {
334
- let raw = ", id serial not null" ;
415
+ let raw = ", id int not null" ;
335
416
let query = sql:: CreateTable :: new ( )
336
417
. column ( "name varchar(100)" )
337
418
. raw_after ( sql:: CreateTableParams :: Column , raw)
338
419
. as_string ( ) ;
339
420
340
- let expected_query = "(name varchar(100), id serial not null)" ;
421
+ let expected_query = "(name varchar(100), id int not null)" ;
341
422
342
423
assert_eq ! ( expected_query, query) ;
343
424
}
344
425
345
426
#[ test]
346
427
fn method_raw_before_should_add_raw_sql_before_column_parameter ( ) {
347
- let raw = "id serial not null, " ;
428
+ let raw = "id int not null, " ;
348
429
let query = sql:: CreateTable :: new ( )
349
430
. raw_before ( sql:: CreateTableParams :: Column , raw)
350
431
. column ( "name varchar(100)" )
351
432
. as_string ( ) ;
352
433
353
- let expected_query = "(id serial not null, name varchar(100))" ;
434
+ let expected_query = "(id int not null, name varchar(100))" ;
354
435
355
436
assert_eq ! ( expected_query, query) ;
356
437
}
@@ -420,13 +501,13 @@ mod method_constraint {
420
501
421
502
#[ test]
422
503
fn method_raw_after_should_add_raw_sql_after_table_constraint_parameter ( ) {
423
- let raw = ", id serial not null" ;
504
+ let raw = ", id int not null" ;
424
505
let query = sql:: CreateTable :: new ( )
425
506
. constraint ( "id users_id_key primary key(id)" )
426
507
. raw_after ( sql:: CreateTableParams :: Constraint , raw)
427
508
. as_string ( ) ;
428
509
429
- let expected_query = "(CONSTRAINT id users_id_key primary key(id), id serial not null)" ;
510
+ let expected_query = "(CONSTRAINT id users_id_key primary key(id), id int not null)" ;
430
511
431
512
assert_eq ! ( expected_query, query) ;
432
513
}
@@ -666,13 +747,13 @@ mod method_primary_key {
666
747
667
748
#[ test]
668
749
fn method_raw_after_should_add_raw_sql_after_primary_key_constraint ( ) {
669
- let raw = ", id serial not null" ;
750
+ let raw = ", id int not null" ;
670
751
let query = sql:: CreateTable :: new ( )
671
752
. primary_key ( "id" )
672
753
. raw_after ( sql:: CreateTableParams :: PrimaryKey , raw)
673
754
. as_string ( ) ;
674
755
675
- let expected_query = "(PRIMARY KEY(id), id serial not null)" ;
756
+ let expected_query = "(PRIMARY KEY(id), id int not null)" ;
676
757
677
758
assert_eq ! ( expected_query, dbg!( query) ) ;
678
759
}
0 commit comments