@@ -11,139 +11,152 @@ cfg_if::cfg_if! {
1111 AsyncPgConnection :: establish( & connection_url) . await . unwrap( )
1212 }
1313
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+
1422 async fn connection_no_data( ) -> AsyncPgConnection {
1523 let mut connection = connection_no_transaction( ) . await ;
1624 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 ;
2326 connection
2427 }
2528
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 ) {
2930
3031 diesel:: sql_query( "CREATE TABLE users (
3132 id SERIAL PRIMARY KEY,
3233 name VARCHAR NOT NULL
33- )" ) . execute( & mut connection) . await . unwrap( ) ;
34+ )" ) . execute( connection) . await . unwrap( ) ;
3435 diesel:: sql_query(
3536 "INSERT INTO users (name) VALUES ('Sean'), ('Tess')"
36- ) . execute( & mut connection) . await . unwrap( ) ;
37+ ) . execute( connection) . await . unwrap( ) ;
3738
3839 diesel:: sql_query(
3940 "CREATE TABLE animals (
4041 id SERIAL PRIMARY KEY,
4142 species VARCHAR NOT NULL,
4243 legs INTEGER NOT NULL,
4344 name VARCHAR
44- )" ) . execute( & mut connection) . await . unwrap( ) ;
45+ )" ) . execute( connection) . await . unwrap( ) ;
4546 diesel:: sql_query(
4647 "INSERT INTO animals (species, legs, name) VALUES
4748 ('dog', 4, 'Jack'),
4849 ('spider', 8, null)"
49- ) . execute( & mut connection)
50+ ) . execute( connection)
5051 . await . unwrap( ) ;
5152
5253 diesel:: sql_query(
5354 "CREATE TABLE posts (
5455 id SERIAL PRIMARY KEY,
5556 user_id INTEGER NOT NULL,
5657 title VARCHAR NOT NULL
57- )" ) . execute( & mut connection) . await . unwrap( ) ;
58+ )" ) . execute( connection) . await . unwrap( ) ;
5859 diesel:: sql_query(
5960 "INSERT INTO posts (user_id, title) VALUES
6061 (1, 'My first post'),
6162 (1, 'About Rust'),
62- (2, 'My first post too')" ) . execute( & mut connection) . await . unwrap( ) ;
63+ (2, 'My first post too')" ) . execute( connection) . await . unwrap( ) ;
6364
6465 diesel:: sql_query( "CREATE TABLE comments (
6566 id SERIAL PRIMARY KEY,
6667 post_id INTEGER NOT NULL,
6768 body VARCHAR NOT NULL
68- )" ) . execute( & mut connection) . await . unwrap( ) ;
69+ )" ) . execute( connection) . await . unwrap( ) ;
6970 diesel:: sql_query( "INSERT INTO comments (post_id, body) VALUES
7071 (1, 'Great post'),
7172 (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( ) ;
7374
7475 diesel:: sql_query( "CREATE TABLE brands (
7576 id SERIAL PRIMARY KEY,
7677 color VARCHAR NOT NULL DEFAULT 'Green',
7778 accent VARCHAR DEFAULT 'Blue'
78- )" ) . execute( & mut connection) . await . unwrap( ) ;
79+ )" ) . execute( connection) . await . unwrap( ) ;
80+ }
7981
82+ #[ allow( dead_code) ]
83+ async fn establish_connection( ) -> AsyncPgConnection {
84+ let mut connection = connection_no_data( ) . await ;
85+ create_tables( & mut connection) . await ;
8086 connection
8187 }
8288 } else if #[ cfg( feature = "mysql" ) ] {
8389 #[ allow( dead_code) ]
8490 type DB = diesel:: mysql:: Mysql ;
8591
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+
86102 async fn connection_no_data( ) -> AsyncMysqlConnection {
87103 let connection_url = database_url_from_env( "MYSQL_UNIT_TEST_DATABASE_URL" ) ;
88104 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 ;
97106 connection
98107 }
99108
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 (
105111 id INTEGER PRIMARY KEY AUTO_INCREMENT,
106112 name TEXT NOT NULL
107- ) CHARACTER SET utf8mb4" ) . execute( & mut connection) . await . unwrap( ) ;
113+ ) CHARACTER SET utf8mb4" ) . execute( connection) . await . unwrap( ) ;
108114
109115
110116 diesel:: sql_query( "CREATE TABLE IF NOT EXISTS animals (
111117 id INTEGER PRIMARY KEY AUTO_INCREMENT,
112118 species TEXT NOT NULL,
113119 legs INTEGER NOT NULL,
114120 name TEXT
115- ) CHARACTER SET utf8mb4" ) . execute( & mut connection) . await . unwrap( ) ;
121+ ) CHARACTER SET utf8mb4" ) . execute( connection) . await . unwrap( ) ;
116122
117123 diesel:: sql_query( "CREATE TABLE IF NOT EXISTS posts (
118124 id INTEGER PRIMARY KEY AUTO_INCREMENT,
119125 user_id INTEGER NOT NULL,
120126 title TEXT NOT NULL
121- ) CHARACTER SET utf8mb4" ) . execute( & mut connection) . await . unwrap( ) ;
127+ ) CHARACTER SET utf8mb4" ) . execute( connection) . await . unwrap( ) ;
122128
123129 diesel:: sql_query( "CREATE TABLE IF NOT EXISTS comments (
124130 id INTEGER PRIMARY KEY AUTO_INCREMENT,
125131 post_id INTEGER NOT NULL,
126132 body TEXT NOT NULL
127- ) CHARACTER SET utf8mb4" ) . execute( & mut connection) . await . unwrap( ) ;
133+ ) CHARACTER SET utf8mb4" ) . execute( connection) . await . unwrap( ) ;
128134 diesel:: sql_query( "CREATE TABLE IF NOT EXISTS brands (
129135 id INTEGER PRIMARY KEY AUTO_INCREMENT,
130136 color VARCHAR(255) NOT NULL DEFAULT 'Green',
131137 accent VARCHAR(255) DEFAULT 'Blue'
132- )" ) . execute( & mut connection) . await . unwrap( ) ;
138+ )" ) . execute( connection) . await . unwrap( ) ;
133139
134140 connection. begin_test_transaction( ) . await . unwrap( ) ;
135141 diesel:: sql_query( "INSERT INTO users (name) VALUES ('Sean'), ('Tess')" ) . execute( & mut connection) . await . unwrap( ) ;
136142 diesel:: sql_query( "INSERT INTO posts (user_id, title) VALUES
137143 (1, 'My first post'),
138144 (1, 'About Rust'),
139- (2, 'My first post too')" ) . execute( & mut connection) . await . unwrap( ) ;
145+ (2, 'My first post too')" ) . execute( connection) . await . unwrap( ) ;
140146 diesel:: sql_query( "INSERT INTO comments (post_id, body) VALUES
141147 (1, 'Great post'),
142148 (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( ) ;
144150 diesel:: sql_query( "INSERT INTO animals (species, legs, name) VALUES
145151 ('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 ;
147160
148161
149162 connection
0 commit comments