From a4e142f6f29887008a666097142d525a6acb6267 Mon Sep 17 00:00:00 2001 From: Yakov Shapovalov Date: Thu, 4 Jul 2024 18:11:35 +0300 Subject: [PATCH] Another attempt at fixes --- .../Sources/Extensions/Models+Content.swift | 10 ++++++++++ .../vapor-swifql-ikiga/Sources/configure.swift | 17 +++++++---------- .../vapor/vapor-swifql-ikiga/Sources/json.swift | 4 ++-- .../vapor/vapor-swifql-ikiga/Sources/main.swift | 15 ++++++++++----- 4 files changed, 29 insertions(+), 17 deletions(-) create mode 100644 frameworks/Swift/vapor/vapor-swifql-ikiga/Sources/Extensions/Models+Content.swift diff --git a/frameworks/Swift/vapor/vapor-swifql-ikiga/Sources/Extensions/Models+Content.swift b/frameworks/Swift/vapor/vapor-swifql-ikiga/Sources/Extensions/Models+Content.swift new file mode 100644 index 00000000000..25fafc6da03 --- /dev/null +++ b/frameworks/Swift/vapor/vapor-swifql-ikiga/Sources/Extensions/Models+Content.swift @@ -0,0 +1,10 @@ +// +// Models+Content.swift +// +// +// Created by Yakov Shapovalov on 04.07.2024. +// + +import Vapor + +extension World: Content {} diff --git a/frameworks/Swift/vapor/vapor-swifql-ikiga/Sources/configure.swift b/frameworks/Swift/vapor/vapor-swifql-ikiga/Sources/configure.swift index 6ce612729be..aaea6fe57a7 100644 --- a/frameworks/Swift/vapor/vapor-swifql-ikiga/Sources/configure.swift +++ b/frameworks/Swift/vapor/vapor-swifql-ikiga/Sources/configure.swift @@ -24,7 +24,7 @@ extension DatabaseIdentifier { public func configure(_ app: Application) throws { - var decoder = IkigaJSONDecoder() + let decoder = IkigaJSONDecoder() decoder.settings.dateDecodingStrategy = .iso8601 ContentConfiguration.global.use(decoder: decoder as ContentDecoder, for: .json) @@ -51,19 +51,16 @@ public func routes(_ app: Application) throws { ["message": "Hello, world!"] } - app.get("db") { req throws -> EventLoopFuture in - req.postgres.connection(to: DbHost) { conn throws -> _ in - guard let world = try World - .select + app.get("db") { req async throws -> World in + guard let world = try await req.postgres.connection(to: .Db, { conn in + World.select .where(\World.$id == Int.random(in: 1...10_000)) .execute(on: conn) .first(decoding: World.self) - else { - throw Abort(.notFound) - } - - return world + }).get() else { + throw Abort(.notFound) } + return world } } diff --git a/frameworks/Swift/vapor/vapor-swifql-ikiga/Sources/json.swift b/frameworks/Swift/vapor/vapor-swifql-ikiga/Sources/json.swift index ada57f0c3e3..ee0f32e540d 100644 --- a/frameworks/Swift/vapor/vapor-swifql-ikiga/Sources/json.swift +++ b/frameworks/Swift/vapor/vapor-swifql-ikiga/Sources/json.swift @@ -4,7 +4,7 @@ import IkigaJSON import Vapor -extension IkigaJSONEncoder: ContentEncoder { +extension IkigaJSONEncoder: @retroactive ContentEncoder { public func encode( _ encodable: E, to body: inout ByteBuffer, @@ -29,7 +29,7 @@ extension IkigaJSONEncoder: ContentEncoder { } } -extension IkigaJSONDecoder: ContentDecoder { +extension IkigaJSONDecoder: @retroactive ContentDecoder { public func decode( _ decodable: D.Type, from body: ByteBuffer, diff --git a/frameworks/Swift/vapor/vapor-swifql-ikiga/Sources/main.swift b/frameworks/Swift/vapor/vapor-swifql-ikiga/Sources/main.swift index c0f871c5dae..9ea07ce7d54 100644 --- a/frameworks/Swift/vapor/vapor-swifql-ikiga/Sources/main.swift +++ b/frameworks/Swift/vapor/vapor-swifql-ikiga/Sources/main.swift @@ -3,10 +3,15 @@ import PostgresBridge import IkigaJSON import Logging -var env = try Environment.detect() -try LoggingSystem.bootstrap(from: &env) +@main +enum App { + static func main() throws { + var env = try Environment.detect() + try LoggingSystem.bootstrap(from: &env) -let app = Application(env) -defer { app.shutdown() } + let app = Application(env) + defer { app.shutdown() } -try configure(app) + try configure(app) + } +}