@@ -11,139 +11,152 @@ cfg_if::cfg_if! {
11
11
AsyncPgConnection :: establish( & connection_url) . await . unwrap( )
12
12
}
13
13
14
+ async fn clear_tables( connection: & mut AsyncPgConnection ) {
15
+ diesel:: sql_query( "DROP TABLE IF EXISTS users CASCADE" ) . execute( connection) . await . unwrap( ) ;
16
+ diesel:: sql_query( "DROP TABLE IF EXISTS animals CASCADE" ) . execute( connection) . await . unwrap( ) ;
17
+ diesel:: sql_query( "DROP TABLE IF EXISTS posts CASCADE" ) . execute( connection) . await . unwrap( ) ;
18
+ diesel:: sql_query( "DROP TABLE IF EXISTS comments CASCADE" ) . execute( connection) . await . unwrap( ) ;
19
+ diesel:: sql_query( "DROP TABLE IF EXISTS brands CASCADE" ) . execute( connection) . await . unwrap( ) ;
20
+ }
21
+
14
22
async fn connection_no_data( ) -> AsyncPgConnection {
15
23
let mut connection = connection_no_transaction( ) . await ;
16
24
connection. begin_test_transaction( ) . await . unwrap( ) ;
17
- diesel:: sql_query( "DROP TABLE IF EXISTS users CASCADE" ) . execute( & mut connection) . await . unwrap( ) ;
18
- diesel:: sql_query( "DROP TABLE IF EXISTS animals CASCADE" ) . execute( & mut connection) . await . unwrap( ) ;
19
- diesel:: sql_query( "DROP TABLE IF EXISTS posts CASCADE" ) . execute( & mut connection) . await . unwrap( ) ;
20
- diesel:: sql_query( "DROP TABLE IF EXISTS comments CASCADE" ) . execute( & mut connection) . await . unwrap( ) ;
21
- diesel:: sql_query( "DROP TABLE IF EXISTS brands CASCADE" ) . execute( & mut connection) . await . unwrap( ) ;
22
-
25
+ clear_tables( & mut connection) . await ;
23
26
connection
24
27
}
25
28
26
- #[ allow( dead_code) ]
27
- async fn establish_connection( ) -> AsyncPgConnection {
28
- let mut connection = connection_no_data( ) . await ;
29
+ async fn create_tables( connection: & mut AsyncPgConnection ) {
29
30
30
31
diesel:: sql_query( "CREATE TABLE users (
31
32
id SERIAL PRIMARY KEY,
32
33
name VARCHAR NOT NULL
33
- )" ) . execute( & mut connection) . await . unwrap( ) ;
34
+ )" ) . execute( connection) . await . unwrap( ) ;
34
35
diesel:: sql_query(
35
36
"INSERT INTO users (name) VALUES ('Sean'), ('Tess')"
36
- ) . execute( & mut connection) . await . unwrap( ) ;
37
+ ) . execute( connection) . await . unwrap( ) ;
37
38
38
39
diesel:: sql_query(
39
40
"CREATE TABLE animals (
40
41
id SERIAL PRIMARY KEY,
41
42
species VARCHAR NOT NULL,
42
43
legs INTEGER NOT NULL,
43
44
name VARCHAR
44
- )" ) . execute( & mut connection) . await . unwrap( ) ;
45
+ )" ) . execute( connection) . await . unwrap( ) ;
45
46
diesel:: sql_query(
46
47
"INSERT INTO animals (species, legs, name) VALUES
47
48
('dog', 4, 'Jack'),
48
49
('spider', 8, null)"
49
- ) . execute( & mut connection)
50
+ ) . execute( connection)
50
51
. await . unwrap( ) ;
51
52
52
53
diesel:: sql_query(
53
54
"CREATE TABLE posts (
54
55
id SERIAL PRIMARY KEY,
55
56
user_id INTEGER NOT NULL,
56
57
title VARCHAR NOT NULL
57
- )" ) . execute( & mut connection) . await . unwrap( ) ;
58
+ )" ) . execute( connection) . await . unwrap( ) ;
58
59
diesel:: sql_query(
59
60
"INSERT INTO posts (user_id, title) VALUES
60
61
(1, 'My first post'),
61
62
(1, 'About Rust'),
62
- (2, 'My first post too')" ) . execute( & mut connection) . await . unwrap( ) ;
63
+ (2, 'My first post too')" ) . execute( connection) . await . unwrap( ) ;
63
64
64
65
diesel:: sql_query( "CREATE TABLE comments (
65
66
id SERIAL PRIMARY KEY,
66
67
post_id INTEGER NOT NULL,
67
68
body VARCHAR NOT NULL
68
- )" ) . execute( & mut connection) . await . unwrap( ) ;
69
+ )" ) . execute( connection) . await . unwrap( ) ;
69
70
diesel:: sql_query( "INSERT INTO comments (post_id, body) VALUES
70
71
(1, 'Great post'),
71
72
(2, 'Yay! I am learning Rust'),
72
- (3, 'I enjoyed your post')" ) . execute( & mut connection) . await . unwrap( ) ;
73
+ (3, 'I enjoyed your post')" ) . execute( connection) . await . unwrap( ) ;
73
74
74
75
diesel:: sql_query( "CREATE TABLE brands (
75
76
id SERIAL PRIMARY KEY,
76
77
color VARCHAR NOT NULL DEFAULT 'Green',
77
78
accent VARCHAR DEFAULT 'Blue'
78
- )" ) . execute( & mut connection) . await . unwrap( ) ;
79
+ )" ) . execute( connection) . await . unwrap( ) ;
80
+ }
79
81
82
+ #[ allow( dead_code) ]
83
+ async fn establish_connection( ) -> AsyncPgConnection {
84
+ let mut connection = connection_no_data( ) . await ;
85
+ create_tables( & mut connection) . await ;
80
86
connection
81
87
}
82
88
} else if #[ cfg( feature = "mysql" ) ] {
83
89
#[ allow( dead_code) ]
84
90
type DB = diesel:: mysql:: Mysql ;
85
91
92
+ async fn clear_tables( connection: & mut AsyncMysqlConnection ) {
93
+ diesel:: sql_query( "SET FOREIGN_KEY_CHECKS=0;" ) . execute( connection) . await . unwrap( ) ;
94
+ diesel:: sql_query( "DROP TABLE IF EXISTS users CASCADE" ) . execute( connection) . await . unwrap( ) ;
95
+ diesel:: sql_query( "DROP TABLE IF EXISTS animals CASCADE" ) . execute( connection) . await . unwrap( ) ;
96
+ diesel:: sql_query( "DROP TABLE IF EXISTS posts CASCADE" ) . execute( connection) . await . unwrap( ) ;
97
+ diesel:: sql_query( "DROP TABLE IF EXISTS comments CASCADE" ) . execute( connection) . await . unwrap( ) ;
98
+ diesel:: sql_query( "DROP TABLE IF EXISTS brands CASCADE" ) . execute( connection) . await . unwrap( ) ;
99
+ diesel:: sql_query( "SET FOREIGN_KEY_CHECKS=1;" ) . execute( connection) . await . unwrap( ) ;
100
+ }
101
+
86
102
async fn connection_no_data( ) -> AsyncMysqlConnection {
87
103
let connection_url = database_url_from_env( "MYSQL_UNIT_TEST_DATABASE_URL" ) ;
88
104
let mut connection = AsyncMysqlConnection :: establish( & connection_url) . await . unwrap( ) ;
89
- diesel:: sql_query( "SET FOREIGN_KEY_CHECKS=0;" ) . execute( & mut connection) . await . unwrap( ) ;
90
- diesel:: sql_query( "DROP TABLE IF EXISTS users CASCADE" ) . execute( & mut connection) . await . unwrap( ) ;
91
- diesel:: sql_query( "DROP TABLE IF EXISTS animals CASCADE" ) . execute( & mut connection) . await . unwrap( ) ;
92
- diesel:: sql_query( "DROP TABLE IF EXISTS posts CASCADE" ) . execute( & mut connection) . await . unwrap( ) ;
93
- diesel:: sql_query( "DROP TABLE IF EXISTS comments CASCADE" ) . execute( & mut connection) . await . unwrap( ) ;
94
- diesel:: sql_query( "DROP TABLE IF EXISTS brands CASCADE" ) . execute( & mut connection) . await . unwrap( ) ;
95
- diesel:: sql_query( "SET FOREIGN_KEY_CHECKS=1;" ) . execute( & mut connection) . await . unwrap( ) ;
96
-
105
+ clear_tables( & mut connection) . await ;
97
106
connection
98
107
}
99
108
100
- #[ allow( dead_code) ]
101
- async fn establish_connection( ) -> AsyncMysqlConnection {
102
- let mut connection = connection_no_data( ) . await ;
103
-
104
- diesel:: sql_query( "CREATE TABLE IF NOT EXISTS users (
109
+ async fn create_tables( connection: & mut AsyncMysqlConnection ) {
110
+ diesel:: sql_query( "CREATE TABLE IF NOT EXISTS users (
105
111
id INTEGER PRIMARY KEY AUTO_INCREMENT,
106
112
name TEXT NOT NULL
107
- ) CHARACTER SET utf8mb4" ) . execute( & mut connection) . await . unwrap( ) ;
113
+ ) CHARACTER SET utf8mb4" ) . execute( connection) . await . unwrap( ) ;
108
114
109
115
110
116
diesel:: sql_query( "CREATE TABLE IF NOT EXISTS animals (
111
117
id INTEGER PRIMARY KEY AUTO_INCREMENT,
112
118
species TEXT NOT NULL,
113
119
legs INTEGER NOT NULL,
114
120
name TEXT
115
- ) CHARACTER SET utf8mb4" ) . execute( & mut connection) . await . unwrap( ) ;
121
+ ) CHARACTER SET utf8mb4" ) . execute( connection) . await . unwrap( ) ;
116
122
117
123
diesel:: sql_query( "CREATE TABLE IF NOT EXISTS posts (
118
124
id INTEGER PRIMARY KEY AUTO_INCREMENT,
119
125
user_id INTEGER NOT NULL,
120
126
title TEXT NOT NULL
121
- ) CHARACTER SET utf8mb4" ) . execute( & mut connection) . await . unwrap( ) ;
127
+ ) CHARACTER SET utf8mb4" ) . execute( connection) . await . unwrap( ) ;
122
128
123
129
diesel:: sql_query( "CREATE TABLE IF NOT EXISTS comments (
124
130
id INTEGER PRIMARY KEY AUTO_INCREMENT,
125
131
post_id INTEGER NOT NULL,
126
132
body TEXT NOT NULL
127
- ) CHARACTER SET utf8mb4" ) . execute( & mut connection) . await . unwrap( ) ;
133
+ ) CHARACTER SET utf8mb4" ) . execute( connection) . await . unwrap( ) ;
128
134
diesel:: sql_query( "CREATE TABLE IF NOT EXISTS brands (
129
135
id INTEGER PRIMARY KEY AUTO_INCREMENT,
130
136
color VARCHAR(255) NOT NULL DEFAULT 'Green',
131
137
accent VARCHAR(255) DEFAULT 'Blue'
132
- )" ) . execute( & mut connection) . await . unwrap( ) ;
138
+ )" ) . execute( connection) . await . unwrap( ) ;
133
139
134
140
connection. begin_test_transaction( ) . await . unwrap( ) ;
135
141
diesel:: sql_query( "INSERT INTO users (name) VALUES ('Sean'), ('Tess')" ) . execute( & mut connection) . await . unwrap( ) ;
136
142
diesel:: sql_query( "INSERT INTO posts (user_id, title) VALUES
137
143
(1, 'My first post'),
138
144
(1, 'About Rust'),
139
- (2, 'My first post too')" ) . execute( & mut connection) . await . unwrap( ) ;
145
+ (2, 'My first post too')" ) . execute( connection) . await . unwrap( ) ;
140
146
diesel:: sql_query( "INSERT INTO comments (post_id, body) VALUES
141
147
(1, 'Great post'),
142
148
(2, 'Yay! I am learning Rust'),
143
- (3, 'I enjoyed your post')" ) . execute( & mut connection) . await . unwrap( ) ;
149
+ (3, 'I enjoyed your post')" ) . execute( connection) . await . unwrap( ) ;
144
150
diesel:: sql_query( "INSERT INTO animals (species, legs, name) VALUES
145
151
('dog', 4, 'Jack'),
146
- ('spider', 8, null)" ) . execute( & mut connection) . await . unwrap( ) ;
152
+ ('spider', 8, null)" ) . execute( connection) . await . unwrap( ) ;
153
+
154
+ }
155
+
156
+ #[ allow( dead_code) ]
157
+ async fn establish_connection( ) -> AsyncMysqlConnection {
158
+ let mut connection = connection_no_data( ) . await ;
159
+ create_tables( & mut connection) . await ;
147
160
148
161
149
162
connection
0 commit comments