From 5c6949eb8123a54adeb2903d011887cef4e34ffb Mon Sep 17 00:00:00 2001 From: Tim <0xtimc@gmail.com> Date: Sun, 6 Oct 2024 02:03:01 +0100 Subject: [PATCH 1/5] Drop support for Swift 5.8 --- Package.swift | 5 ++++- Package@swift-5.9.swift | 48 ----------------------------------------- 2 files changed, 4 insertions(+), 49 deletions(-) delete mode 100644 Package@swift-5.9.swift diff --git a/Package.swift b/Package.swift index fcceab4..e2305c3 100644 --- a/Package.swift +++ b/Package.swift @@ -1,4 +1,4 @@ -// swift-tools-version:5.8 +// swift-tools-version:5.9 import PackageDescription let package = Package( @@ -40,6 +40,9 @@ let package = Package( ) var swiftSettings: [SwiftSetting] { [ + .enableUpcomingFeature("ExistentialAny"), .enableUpcomingFeature("ConciseMagicFile"), .enableUpcomingFeature("ForwardTrailingClosures"), + .enableUpcomingFeature("DisableOutwardActorInference"), + .enableExperimentalFeature("StrictConcurrency=complete"), ] } diff --git a/Package@swift-5.9.swift b/Package@swift-5.9.swift deleted file mode 100644 index e2305c3..0000000 --- a/Package@swift-5.9.swift +++ /dev/null @@ -1,48 +0,0 @@ -// swift-tools-version:5.9 -import PackageDescription - -let package = Package( - name: "fluent-postgres-driver", - platforms: [ - .macOS(.v10_15), - .iOS(.v13), - .watchOS(.v6), - .tvOS(.v13), - ], - products: [ - .library(name: "FluentPostgresDriver", targets: ["FluentPostgresDriver"]), - ], - dependencies: [ - .package(url: "https://github.com/vapor/async-kit.git", from: "1.19.0"), - .package(url: "https://github.com/vapor/fluent-kit.git", from: "1.48.4"), - .package(url: "https://github.com/vapor/postgres-kit.git", from: "2.13.4"), - ], - targets: [ - .target( - name: "FluentPostgresDriver", - dependencies: [ - .product(name: "AsyncKit", package: "async-kit"), - .product(name: "FluentKit", package: "fluent-kit"), - .product(name: "FluentSQL", package: "fluent-kit"), - .product(name: "PostgresKit", package: "postgres-kit"), - ], - swiftSettings: swiftSettings - ), - .testTarget( - name: "FluentPostgresDriverTests", - dependencies: [ - .product(name: "FluentBenchmark", package: "fluent-kit"), - .target(name: "FluentPostgresDriver"), - ], - swiftSettings: swiftSettings - ), - ] -) - -var swiftSettings: [SwiftSetting] { [ - .enableUpcomingFeature("ExistentialAny"), - .enableUpcomingFeature("ConciseMagicFile"), - .enableUpcomingFeature("ForwardTrailingClosures"), - .enableUpcomingFeature("DisableOutwardActorInference"), - .enableExperimentalFeature("StrictConcurrency=complete"), -] } From 1652aa40827d1957051c27437e10866c1aa53a07 Mon Sep 17 00:00:00 2001 From: Tim <0xtimc@gmail.com> Date: Sun, 6 Oct 2024 02:03:51 +0100 Subject: [PATCH 2/5] Update dependencies --- Package.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Package.swift b/Package.swift index e2305c3..0560db0 100644 --- a/Package.swift +++ b/Package.swift @@ -13,8 +13,8 @@ let package = Package( .library(name: "FluentPostgresDriver", targets: ["FluentPostgresDriver"]), ], dependencies: [ - .package(url: "https://github.com/vapor/async-kit.git", from: "1.19.0"), - .package(url: "https://github.com/vapor/fluent-kit.git", from: "1.48.4"), + .package(url: "https://github.com/vapor/async-kit.git", from: "1.20.0"), + .package(url: "https://github.com/vapor/fluent-kit.git", from: "1.49.0"), .package(url: "https://github.com/vapor/postgres-kit.git", from: "2.13.4"), ], targets: [ From c44ce66a0c4154ba80750ef52e5dd1ee192618d4 Mon Sep 17 00:00:00 2001 From: Tim <0xtimc@gmail.com> Date: Sun, 6 Oct 2024 02:05:13 +0100 Subject: [PATCH 3/5] Adopt new APIs --- Sources/FluentPostgresDriver/FluentPostgresDriver.swift | 4 ++++ .../FluentPostgresDriverTests/FluentPostgresDriverTests.swift | 2 +- .../FluentPostgresTransactionControlTests.swift | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/Sources/FluentPostgresDriver/FluentPostgresDriver.swift b/Sources/FluentPostgresDriver/FluentPostgresDriver.swift index d375eba..5b4d85c 100644 --- a/Sources/FluentPostgresDriver/FluentPostgresDriver.swift +++ b/Sources/FluentPostgresDriver/FluentPostgresDriver.swift @@ -27,4 +27,8 @@ struct _FluentPostgresDriver: Da func shutdown() { try? self.pool.syncShutdownGracefully() } + + func shutdownAsync() async { + try? await self.pool.shutdownAsync() + } } diff --git a/Tests/FluentPostgresDriverTests/FluentPostgresDriverTests.swift b/Tests/FluentPostgresDriverTests/FluentPostgresDriverTests.swift index 2297391..2501e4a 100644 --- a/Tests/FluentPostgresDriverTests/FluentPostgresDriverTests.swift +++ b/Tests/FluentPostgresDriverTests/FluentPostgresDriverTests.swift @@ -274,7 +274,7 @@ final class FluentPostgresDriverTests: XCTestCase { } override func tearDown() async throws { - self.dbs.shutdown() + await self.dbs.shutdownAsync() try await super.tearDown() } } diff --git a/Tests/FluentPostgresDriverTests/FluentPostgresTransactionControlTests.swift b/Tests/FluentPostgresDriverTests/FluentPostgresTransactionControlTests.swift index fa8f784..b33a45f 100644 --- a/Tests/FluentPostgresDriverTests/FluentPostgresTransactionControlTests.swift +++ b/Tests/FluentPostgresDriverTests/FluentPostgresTransactionControlTests.swift @@ -56,7 +56,7 @@ final class FluentPostgresTransactionControlTests: XCTestCase { override func tearDown() async throws { try await CreateTodo().revert(on: self.db) - self.dbs.shutdown() + await self.dbs.shutdownAsync() try await super.tearDown() } From 52e04232085a18e8848a55d15ba564df3df90936 Mon Sep 17 00:00:00 2001 From: Tim <0xtimc@gmail.com> Date: Sun, 6 Oct 2024 02:07:34 +0100 Subject: [PATCH 4/5] Fix some warnings in Swift 6 --- .../PostgresError+Database.swift | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/Sources/FluentPostgresDriver/PostgresError+Database.swift b/Sources/FluentPostgresDriver/PostgresError+Database.swift index a214b6e..a2435ee 100644 --- a/Sources/FluentPostgresDriver/PostgresError+Database.swift +++ b/Sources/FluentPostgresDriver/PostgresError+Database.swift @@ -71,7 +71,8 @@ fileprivate extension PostgresError.Code { } } -extension PostgresError: DatabaseError { +// Used for DatabaseError conformance +extension PostgresError { public var isSyntaxError: Bool { self.code.isSyntaxError } public var isConnectionClosed: Bool { switch self { @@ -82,7 +83,8 @@ extension PostgresError: DatabaseError { public var isConstraintFailure: Bool { self.code.isConstraintFailure } } -extension PSQLError: DatabaseError { +// Used for DatabaseError conformance +extension PSQLError { public var isSyntaxError: Bool { switch self.code { case .server: return self.serverInfo?[.sqlState].map { PostgresError.Code(raw: $0).isSyntaxError } ?? false @@ -104,3 +106,11 @@ extension PSQLError: DatabaseError { } } } + +#if compiler(<6) +extension PostgresError: DatabaseError { } +extension PSQLError: DatabaseError { } +#else +extension PostgresError: @retroactive DatabaseError { } +extension PSQLError: @retroactive DatabaseError { } +#endif From 8164723728e8076d29e3806b5656397baaef3ec1 Mon Sep 17 00:00:00 2001 From: Tim <0xtimc@gmail.com> Date: Sun, 6 Oct 2024 02:17:41 +0100 Subject: [PATCH 5/5] Update CI --- .github/workflows/test.yml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 4af2166..7329336 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -45,7 +45,7 @@ jobs: - postgres-image-a: 'postgres:13' postgres-image-b: 'postgres:14' postgres-auth: 'trust' - swift-image: 'swift:5.8-focal' + swift-image: 'swift:5.9-focal' - postgres-image-a: 'postgres:15' postgres-image-b: 'postgres:16' postgres-auth: 'md5' @@ -53,7 +53,7 @@ jobs: - postgres-image-a: 'postgres:15' postgres-image-b: 'postgres:16' postgres-auth: 'scram-sha-256' - swift-image: 'swiftlang/swift:nightly-6.0-jammy' + swift-image: 'swift:6.0-jammy' container: ${{ matrix.swift-image }} runs-on: ubuntu-latest services: @@ -89,8 +89,6 @@ jobs: fail-fast: false matrix: include: - - macos-version: macos-13 - xcode-version: '~14.3' - macos-version: macos-14 xcode-version: latest runs-on: ${{ matrix.macos-version }}