|
@@ -9,13 +9,14 @@ class WorldController {
|
|
}
|
|
}
|
|
|
|
|
|
func single(request: HBRequest) -> EventLoopFuture<World> {
|
|
func single(request: HBRequest) -> EventLoopFuture<World> {
|
|
- request.db.query("SELECT id, randomnumber FROM World WHERE id = $1", [
|
|
|
|
- PostgresData(int32: .random(in: 1...10_000))
|
|
|
|
|
|
+ let id = Int32.random(in: 1...10_000)
|
|
|
|
+ return request.db.query("SELECT id, randomnumber FROM World WHERE id = $1", [
|
|
|
|
+ PostgresData(int32: id)
|
|
]).flatMapThrowing { result -> World in
|
|
]).flatMapThrowing { result -> World in
|
|
guard let firstResult = result.first else { throw HBHTTPError(.notFound) }
|
|
guard let firstResult = result.first else { throw HBHTTPError(.notFound) }
|
|
return World(
|
|
return World(
|
|
- id: firstResult.column("id")?.int32 ?? 0,
|
|
|
|
- randomNumber: firstResult.column("randomnumber")?.int ?? 0
|
|
|
|
|
|
+ id: id,
|
|
|
|
+ randomNumber: firstResult.column("randomnumber")?.int32 ?? 0
|
|
)
|
|
)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -23,13 +24,14 @@ class WorldController {
|
|
func multiple(request: HBRequest) -> EventLoopFuture<[World]> {
|
|
func multiple(request: HBRequest) -> EventLoopFuture<[World]> {
|
|
let queries = (request.uri.queryParameters.get("queries", as: Int.self) ?? 1).bound(1, 500)
|
|
let queries = (request.uri.queryParameters.get("queries", as: Int.self) ?? 1).bound(1, 500)
|
|
let futures: [EventLoopFuture<World>] = (0 ..< queries).map { _ -> EventLoopFuture<World> in
|
|
let futures: [EventLoopFuture<World>] = (0 ..< queries).map { _ -> EventLoopFuture<World> in
|
|
- request.db.query("SELECT id, randomnumber FROM World WHERE id = $1", [
|
|
|
|
- PostgresData(int32: .random(in: 1...10_000))
|
|
|
|
|
|
+ let id = Int32.random(in: 1...10_000)
|
|
|
|
+ return request.db.query("SELECT id, randomnumber FROM World WHERE id = $1", [
|
|
|
|
+ PostgresData(int32: id)
|
|
]).flatMapThrowing { result -> World in
|
|
]).flatMapThrowing { result -> World in
|
|
guard let firstResult = result.first else { throw HBHTTPError(.notFound) }
|
|
guard let firstResult = result.first else { throw HBHTTPError(.notFound) }
|
|
return World(
|
|
return World(
|
|
- id: firstResult.column("id")?.int32 ?? 0,
|
|
|
|
- randomNumber: firstResult.column("randomnumber")?.int ?? 0
|
|
|
|
|
|
+ id: id,
|
|
|
|
+ randomNumber: firstResult.column("randomnumber")?.int32 ?? 0
|
|
)
|
|
)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -40,18 +42,17 @@ class WorldController {
|
|
let queries = (request.uri.queryParameters.get("queries", as: Int.self) ?? 1).bound(1, 500)
|
|
let queries = (request.uri.queryParameters.get("queries", as: Int.self) ?? 1).bound(1, 500)
|
|
let ids = (0 ..< queries).map { _ in Int32.random(in: 1...10_000) }
|
|
let ids = (0 ..< queries).map { _ in Int32.random(in: 1...10_000) }
|
|
let futures: [EventLoopFuture<World>] = ids.map { _ -> EventLoopFuture<World> in
|
|
let futures: [EventLoopFuture<World>] = ids.map { _ -> EventLoopFuture<World> in
|
|
- request.db.query("SELECT id, randomnumber FROM World WHERE id = $1", [
|
|
|
|
- PostgresData(int32: .random(in: 1...10_000))
|
|
|
|
|
|
+ let id = Int32.random(in: 1...10_000)
|
|
|
|
+ let randomNumber = Int32.random(in: 1...10_000)
|
|
|
|
+ return request.db.query("SELECT id, randomnumber FROM World WHERE id = $1", [
|
|
|
|
+ PostgresData(int32: id)
|
|
]).flatMap { result in
|
|
]).flatMap { result in
|
|
- guard let firstResult = result.first else { return request.failure(.notFound) }
|
|
|
|
- let id = firstResult.column("id")?.int32 ?? 0
|
|
|
|
- let randomNumber = Int32.random(in: 1...10_000)
|
|
|
|
return request.db.query("UPDATE World SET randomnumber = $1 WHERE id = $2", [
|
|
return request.db.query("UPDATE World SET randomnumber = $1 WHERE id = $2", [
|
|
PostgresData(int32: randomNumber),
|
|
PostgresData(int32: randomNumber),
|
|
PostgresData(int32: id)
|
|
PostgresData(int32: id)
|
|
- ]).map { ($0, World(id: id, randomNumber: numericCast(randomNumber))) }
|
|
|
|
- }.map { (result: PostgresQueryResult, world) in
|
|
|
|
- return world
|
|
|
|
|
|
+ ])
|
|
|
|
+ }.map { _ in
|
|
|
|
+ return World(id: id, randomNumber: randomNumber)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return EventLoopFuture.whenAllSucceed(futures, on: request.eventLoop)
|
|
return EventLoopFuture.whenAllSucceed(futures, on: request.eventLoop)
|