@@ -14,6 +14,7 @@ cfg_if! {
1414 let connection = diesel:: pg:: PgConnection :: establish( & connection_url) . unwrap( ) ;
1515 connection. begin_test_transaction( ) . unwrap( ) ;
1616 connection. execute( "DROP TABLE IF EXISTS users" ) . unwrap( ) ;
17+ connection. execute( "DROP TABLE IF EXISTS animals" ) . unwrap( ) ;
1718
1819 connection
1920 }
@@ -28,6 +29,16 @@ cfg_if! {
2829 )" ) . unwrap( ) ;
2930 connection. execute( "INSERT INTO users (name) VALUES ('Sean'), ('Tess')" ) . unwrap( ) ;
3031
32+ connection. execute( "CREATE TABLE animals (
33+ id SERIAL PRIMARY KEY,
34+ species VARCHAR NOT NULL,
35+ legs INTEGER NOT NULL,
36+ name VARCHAR
37+ )" ) . unwrap( ) ;
38+ connection. execute( "INSERT INTO animals (species, legs, name) VALUES
39+ ('dog', 4, 'Jack'),
40+ ('spider', 8, null)" ) . unwrap( ) ;
41+
3142 connection
3243 }
3344 } else if #[ cfg( feature = "sqlite" ) ] {
@@ -48,6 +59,16 @@ cfg_if! {
4859 )" ) . unwrap( ) ;
4960 connection. execute( "INSERT INTO users (name) VALUES ('Sean'), ('Tess')" ) . unwrap( ) ;
5061
62+ connection. execute( "CREATE TABLE animals (
63+ id INTEGER PRIMARY KEY AUTOINCREMENT,
64+ species VARCHAR NOT NULL,
65+ legs INTEGER NOT NULL,
66+ name VARCHAR
67+ )" ) . unwrap( ) ;
68+ connection. execute( "INSERT INTO animals (species, legs, name) VALUES
69+ ('dog', 4, 'Jack'),
70+ ('spider', 8, null)" ) . unwrap( ) ;
71+
5172 connection
5273 }
5374 } else if #[ cfg( feature = "mysql" ) ] {
@@ -58,6 +79,7 @@ cfg_if! {
5879 let connection_url = database_url_from_env( "MYSQL_UNIT_TEST_DATABASE_URL" ) ;
5980 let connection = diesel:: mysql:: MysqlConnection :: establish( & connection_url) . unwrap( ) ;
6081 connection. execute( "DROP TABLE IF EXISTS users" ) . unwrap( ) ;
82+ connection. execute( "DROP TABLE IF EXISTS animals" ) . unwrap( ) ;
6183
6284 connection
6385 }
@@ -71,8 +93,18 @@ cfg_if! {
7193 name TEXT NOT NULL
7294 ) CHARACTER SET utf8mb4" ) . unwrap( ) ;
7395 connection. execute( "INSERT INTO users (name) VALUES ('Sean'), ('Tess')" ) . unwrap( ) ;
74- connection. begin_test_transaction( ) . unwrap( ) ;
7596
97+ connection. execute( "CREATE TABLE animals (
98+ id INTEGER PRIMARY KEY AUTO_INCREMENT,
99+ species TEXT NOT NULL,
100+ legs INTEGER NOT NULL,
101+ name TEXT
102+ ) CHARACTER SET utf8mb4" ) . unwrap( ) ;
103+ connection. execute( "INSERT INTO animals (species, legs, name) VALUES
104+ ('dog', 4, 'Jack'),
105+ ('spider', 8, null)" ) . unwrap( ) ;
106+
107+ connection. begin_test_transaction( ) . unwrap( ) ;
76108 connection
77109 }
78110 } else {
@@ -111,3 +143,39 @@ impl_Insertable! {
111143 name: String ,
112144 }
113145}
146+
147+ table ! {
148+ animals {
149+ id -> Integer ,
150+ species -> VarChar ,
151+ legs -> Integer ,
152+ name -> Nullable <VarChar >,
153+ }
154+ }
155+
156+ #[ derive( Clone ) ]
157+ #[ allow( dead_code) ]
158+ struct NewAnimal {
159+ species : String ,
160+ legs : i32 ,
161+ name : Option < String > ,
162+ }
163+
164+ impl NewAnimal {
165+ pub fn new ( species : & str , legs : i32 , name : Option < & str > ) -> Self {
166+ NewAnimal {
167+ species : species. into ( ) ,
168+ legs : legs,
169+ name : name. map ( |n| n. into ( ) ) ,
170+ }
171+ }
172+ }
173+
174+ impl_Insertable ! {
175+ ( animals)
176+ struct NewAnimal {
177+ species: String ,
178+ legs: i32 ,
179+ name: Option <String >,
180+ }
181+ }
0 commit comments