1
- #![ feature( proc_macro_hygiene, decl_macro) ]
2
1
#[ macro_use]
3
2
extern crate lazy_static;
4
3
#[ macro_use]
@@ -9,7 +8,6 @@ extern crate dotenv;
9
8
mod models;
10
9
mod random;
11
10
mod database;
12
- mod request;
13
11
14
12
use dotenv:: dotenv;
15
13
use std:: net:: { IpAddr , Ipv4Addr } ;
@@ -26,7 +24,6 @@ use figment::Figment;
26
24
use models:: { World , Fortune , Message } ;
27
25
use database:: HelloWorld ;
28
26
use random:: random_number;
29
- use request:: RequestId ;
30
27
31
28
#[ get( "/plaintext" ) ]
32
29
async fn plaintext ( ) -> & ' static str {
@@ -42,8 +39,8 @@ async fn json() -> Json<models::Message> {
42
39
}
43
40
44
41
#[ get( "/db" ) ]
45
- async fn db ( mut db : Connection < HelloWorld > , id : RequestId ) -> Json < World > {
46
- let number = random_number ( & id ) ;
42
+ async fn db ( mut db : Connection < HelloWorld > ) -> Json < World > {
43
+ let number = random_number ( ) ;
47
44
48
45
let result : World = sqlx:: query_as ( "SELECT id, randomnumber FROM World WHERE id = $1" ) . bind ( number)
49
46
. fetch_one ( & mut * db) . await . ok ( ) . expect ( "error loading world" ) ;
@@ -52,12 +49,12 @@ async fn db(mut db: Connection<HelloWorld>, id: RequestId) -> Json<World> {
52
49
}
53
50
54
51
#[ get( "/queries" ) ]
55
- async fn queries_empty ( db : Connection < HelloWorld > , id : RequestId ) -> Json < Vec < World > > {
56
- queries ( db, id , 1 ) . await
52
+ async fn queries_empty ( db : Connection < HelloWorld > ) -> Json < Vec < World > > {
53
+ queries ( db, 1 ) . await
57
54
}
58
55
59
56
#[ get( "/queries?<q>" ) ]
60
- async fn queries ( mut db : Connection < HelloWorld > , id : RequestId , q : u16 ) -> Json < Vec < World > > {
57
+ async fn queries ( mut db : Connection < HelloWorld > , q : u16 ) -> Json < Vec < World > > {
61
58
let q = if q == 0 {
62
59
1
63
60
} else if q > 500 {
@@ -69,7 +66,7 @@ async fn queries(mut db: Connection<HelloWorld>, id: RequestId, q: u16) -> Json<
69
66
let mut results = Vec :: with_capacity ( q as usize ) ;
70
67
71
68
for _ in 0 ..q {
72
- let query_id = random_number ( & id ) ;
69
+ let query_id = random_number ( ) ;
73
70
74
71
let result : World = sqlx:: query_as ( "SELECT * FROM World WHERE id = $1" ) . bind ( query_id)
75
72
. fetch_one ( & mut * db) . await . ok ( ) . expect ( "error loading world" ) ;
@@ -108,12 +105,12 @@ async fn fortunes(mut db: Connection<HelloWorld>) -> RawHtml<String> {
108
105
}
109
106
110
107
#[ get( "/updates" ) ]
111
- async fn updates_empty ( db : Connection < HelloWorld > , id : RequestId ) -> Json < Vec < World > > {
112
- updates ( db, id , 1 ) . await
108
+ async fn updates_empty ( db : Connection < HelloWorld > ) -> Json < Vec < World > > {
109
+ updates ( db, 1 ) . await
113
110
}
114
111
115
112
#[ get( "/updates?<q>" ) ]
116
- async fn updates ( mut db : Connection < HelloWorld > , id : RequestId , q : u16 ) -> Json < Vec < World > > {
113
+ async fn updates ( mut db : Connection < HelloWorld > , q : u16 ) -> Json < Vec < World > > {
117
114
let q = if q == 0 {
118
115
1
119
116
} else if q > 500 {
@@ -125,11 +122,11 @@ async fn updates(mut db: Connection<HelloWorld>, id: RequestId, q: u16) -> Json<
125
122
let mut results = Vec :: with_capacity ( q as usize ) ;
126
123
127
124
for _ in 0 ..q {
128
- let query_id = random_number ( & id ) ;
125
+ let query_id = random_number ( ) ;
129
126
let mut result : World = sqlx:: query_as ( "SELECT * FROM World WHERE id = $1" ) . bind ( query_id)
130
127
. fetch_one ( & mut * db) . await . ok ( ) . expect ( "World was not found" ) ;
131
128
132
- result. random_number = random_number ( & id ) ;
129
+ result. random_number = random_number ( ) ;
133
130
results. push ( result) ;
134
131
}
135
132
@@ -192,104 +189,3 @@ pub fn launch() -> Rocket<Build> {
192
189
. attach ( HelloWorld :: init ( ) )
193
190
}
194
191
195
- #[ cfg( test) ]
196
- mod tests
197
- {
198
- use std:: env;
199
- use rocket:: { Rocket , Build } ;
200
- use rocket:: { local:: blocking:: Client } ;
201
- use crate :: database:: HelloWorld ;
202
- use rocket:: fairing:: { self , AdHoc } ;
203
- use rocket_db_pools:: Database ;
204
-
205
- #[ test]
206
- fn plaintext ( ) {
207
- let client = create_client ( ) ;
208
-
209
- let response = client. get ( "/plaintext" ) . dispatch ( ) ;
210
- assert_eq ! ( response. into_string( ) . unwrap( ) , "Hello, World!" ) ;
211
- }
212
-
213
- #[ test]
214
- fn json ( ) {
215
- let client = create_client ( ) ;
216
-
217
- let response = client. get ( "/json" ) . dispatch ( ) ;
218
- assert_eq ! ( response. into_string( ) . unwrap( ) , "{\" message\" :\" Hello, World!\" }" ) ;
219
- }
220
-
221
- #[ test]
222
- fn db ( ) {
223
- let client = create_client ( ) ;
224
-
225
- let response = client. get ( "/db" ) . dispatch ( ) ;
226
- assert_eq ! ( response. into_string( ) . unwrap( ) , "{\" id\" :1,\" randomNumber\" :101}" ) ;
227
- }
228
-
229
- #[ test]
230
- fn queries_empty ( ) {
231
- let client = create_client ( ) ;
232
-
233
- let response = client. get ( "/queries" ) . dispatch ( ) ;
234
- assert_eq ! ( response. into_string( ) . unwrap( ) , "[{\" id\" :1,\" randomNumber\" :101}]" ) ;
235
- }
236
-
237
- #[ test]
238
- fn queries_non_empty ( ) {
239
- let client = create_client ( ) ;
240
-
241
- let response = client. get ( "/queries?q=3" ) . dispatch ( ) ;
242
- assert_eq ! ( response. into_string( ) . unwrap( ) , "[{\" id\" :1,\" randomNumber\" :101},{\" id\" :2,\" randomNumber\" :102},{\" id\" :3,\" randomNumber\" :103}]" ) ;
243
- }
244
-
245
- #[ test]
246
- fn fortunes ( ) {
247
- let client = create_client ( ) ;
248
-
249
- let response = client. get ( "/fortunes" ) . dispatch ( ) ;
250
- assert_eq ! ( response. into_string( ) . unwrap( ) , "<!DOCTYPE html><html><head><title>Fortunes</title></head><body><table><tr><th>id</th><th>message</th></tr><tr><td>11</td><td><script>alert("This should not be displayed in a browser alert box.");</script></td></tr><tr><td>4</td><td>A bad random number generator: 1, 1, 1, 1, 1, 4.33e+67, 1, 1, 1</td></tr><tr><td>5</td><td>A computer program does what you tell it to do, not what you want it to do.</td></tr><tr><td>2</td><td>A computer scientist is someone who fixes things that aren't broken.</td></tr><tr><td>8</td><td>A list is only as strong as its weakest link. — Donald Knuth</td></tr><tr><td>0</td><td>Additional fortune added at request time.</td></tr><tr><td>3</td><td>After enough decimal places, nobody gives a damn.</td></tr><tr><td>7</td><td>Any program that runs right is obsolete.</td></tr><tr><td>10</td><td>Computers make very fast, very accurate mistakes.</td></tr><tr><td>6</td><td>Emacs is a nice operating system, but I prefer UNIX. — Tom Christaensen</td></tr><tr><td>9</td><td>Feature: A bug with seniority.</td></tr><tr><td>1</td><td>fortune: No such file or directory</td></tr><tr><td>12</td><td>フレームワークのベンチマーク</td></tr></table></body></html>" ) ;
251
- }
252
-
253
- #[ test]
254
- fn updates_empty ( ) {
255
- let client = create_client ( ) ;
256
-
257
- let response = client. get ( "/updates" ) . dispatch ( ) ;
258
- assert_eq ! ( response. into_string( ) . unwrap( ) , "[{\" id\" :1,\" randomNumber\" :2}]" ) ;
259
- }
260
-
261
- #[ test]
262
- fn updates_non_empty ( ) {
263
- let client = create_client ( ) ;
264
-
265
- let response = client. get ( "/updates?q=3" ) . dispatch ( ) ;
266
- assert_eq ! ( response. into_string( ) . unwrap( ) , "[{\" id\" :1,\" randomNumber\" :2},{\" id\" :3,\" randomNumber\" :4},{\" id\" :5,\" randomNumber\" :6}]" ) ;
267
- }
268
-
269
- fn create_client ( ) -> Client {
270
- env:: set_var ( "ROCKET_BENCHMARK_DATABASE_URL" , "sqlite::memory:" ) ;
271
-
272
- let rocket = create_rocket ( ) ;
273
- let client = Client :: debug ( rocket) . unwrap ( ) ;
274
- client
275
- }
276
-
277
- fn create_rocket ( ) -> Rocket < Build > {
278
- super :: launch ( ) . attach ( AdHoc :: try_on_ignite ( "SQLx Migrations" , run_migrations) )
279
- }
280
-
281
- async fn run_migrations ( rocket : Rocket < Build > ) -> fairing:: Result {
282
- match HelloWorld :: fetch ( & rocket) {
283
- Some ( db) => match sqlx:: migrate!( "db/migrations" ) . run ( & * * db) . await {
284
- Ok ( _) => Ok ( rocket) ,
285
- Err ( e) => {
286
- error ! ( "Failed to initialize HelloWorld database: {}" , e) ;
287
- Err ( rocket)
288
- }
289
- }
290
- None => Err ( rocket) ,
291
- }
292
- }
293
- }
294
-
295
-
0 commit comments