@@ -9,27 +9,29 @@ class WorldController {
9
9
}
10
10
11
11
func single( request: HBRequest ) -> EventLoopFuture < World > {
12
- request. db. query ( " SELECT id, randomnumber FROM World WHERE id = $1 " , [
13
- PostgresData ( int32: . random( in: 1 ... 10_000 ) )
12
+ let id = Int32 . random ( in: 1 ... 10_000 )
13
+ return request. db. query ( " SELECT id, randomnumber FROM World WHERE id = $1 " , [
14
+ PostgresData ( int32: id)
14
15
] ) . flatMapThrowing { result -> World in
15
16
guard let firstResult = result. first else { throw HBHTTPError ( . notFound) }
16
17
return World (
17
- id: firstResult . column ( " id " ) ? . int32 ?? 0 ,
18
- randomNumber: firstResult. column ( " randomnumber " ) ? . int ?? 0
18
+ id: id ,
19
+ randomNumber: firstResult. column ( " randomnumber " ) ? . int32 ?? 0
19
20
)
20
21
}
21
22
}
22
23
23
24
func multiple( request: HBRequest ) -> EventLoopFuture < [ World ] > {
24
25
let queries = ( request. uri. queryParameters. get ( " queries " , as: Int . self) ?? 1 ) . bound ( 1 , 500 )
25
26
let futures : [ EventLoopFuture < World > ] = ( 0 ..< queries) . map { _ -> EventLoopFuture < World > in
26
- request. db. query ( " SELECT id, randomnumber FROM World WHERE id = $1 " , [
27
- PostgresData ( int32: . random( in: 1 ... 10_000 ) )
27
+ let id = Int32 . random ( in: 1 ... 10_000 )
28
+ return request. db. query ( " SELECT id, randomnumber FROM World WHERE id = $1 " , [
29
+ PostgresData ( int32: id)
28
30
] ) . flatMapThrowing { result -> World in
29
31
guard let firstResult = result. first else { throw HBHTTPError ( . notFound) }
30
32
return World (
31
- id: firstResult . column ( " id " ) ? . int32 ?? 0 ,
32
- randomNumber: firstResult. column ( " randomnumber " ) ? . int ?? 0
33
+ id: id ,
34
+ randomNumber: firstResult. column ( " randomnumber " ) ? . int32 ?? 0
33
35
)
34
36
}
35
37
}
@@ -40,18 +42,17 @@ class WorldController {
40
42
let queries = ( request. uri. queryParameters. get ( " queries " , as: Int . self) ?? 1 ) . bound ( 1 , 500 )
41
43
let ids = ( 0 ..< queries) . map { _ in Int32 . random ( in: 1 ... 10_000 ) }
42
44
let futures : [ EventLoopFuture < World > ] = ids. map { _ -> EventLoopFuture < World > in
43
- request. db. query ( " SELECT id, randomnumber FROM World WHERE id = $1 " , [
44
- PostgresData ( int32: . random( in: 1 ... 10_000 ) )
45
+ let id = Int32 . random ( in: 1 ... 10_000 )
46
+ let randomNumber = Int32 . random ( in: 1 ... 10_000 )
47
+ return request. db. query ( " SELECT id, randomnumber FROM World WHERE id = $1 " , [
48
+ PostgresData ( int32: id)
45
49
] ) . flatMap { result in
46
- guard let firstResult = result. first else { return request. failure ( . notFound) }
47
- let id = firstResult. column ( " id " ) ? . int32 ?? 0
48
- let randomNumber = Int32 . random ( in: 1 ... 10_000 )
49
50
return request. db. query ( " UPDATE World SET randomnumber = $1 WHERE id = $2 " , [
50
51
PostgresData ( int32: randomNumber) ,
51
52
PostgresData ( int32: id)
52
- ] ) . map { ( $0 , World ( id : id , randomNumber : numericCast ( randomNumber ) ) ) }
53
- } . map { ( result : PostgresQueryResult , world ) in
54
- return world
53
+ ] )
54
+ } . map { _ in
55
+ return World ( id : id , randomNumber : randomNumber )
55
56
}
56
57
}
57
58
return EventLoopFuture . whenAllSucceed ( futures, on: request. eventLoop)
0 commit comments