Skip to content

Commit f6c1bff

Browse files
authored
Apply updates for improved interop with SQLKit (#259)
* Require Swift 5.8, update logo * Code style cleanups * Provide new SQLDatabase APIs from SQLKit's overhaul branch. * Fix error handling in tests, remove redundant test * Update CI * Simplify readme
1 parent 475bf6f commit f6c1bff

13 files changed

+318
-231
lines changed

.github/contributing.md

-33
This file was deleted.

.github/workflows/test.yml

+6-6
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ jobs:
7878
if: ${{ false && !(github.event.pull_request.draft || false) }}
7979
runs-on: ubuntu-latest
8080
container:
81-
image: swift:5.9-jammy
81+
image: swift:5.10-jammy
8282
permissions: { actions: write, contents: read, security-events: write }
8383
timeout-minutes: 60
8484
steps:
@@ -111,10 +111,9 @@ jobs:
111111
- postgres:14
112112
- postgres:12
113113
swift-image:
114-
- swift:5.7-jammy
115114
- swift:5.8-jammy
116115
- swift:5.9-jammy
117-
- swiftlang/swift:nightly-5.10-jammy
116+
- swift:5.10-jammy
118117
- swiftlang/swift:nightly-main-jammy
119118
include:
120119
- postgres-image: postgres:16
@@ -143,7 +142,7 @@ jobs:
143142
linux-integration:
144143
if: ${{ !(github.event.pull_request.draft || false) }}
145144
runs-on: ubuntu-latest
146-
container: swift:5.9-jammy
145+
container: swift:5.10-jammy
147146
services:
148147
psql-a:
149148
image: postgres:16
@@ -194,11 +193,12 @@ jobs:
194193
xcode-version: ${{ matrix.xcode-version }}
195194
- name: Install Postgres, setup DB and auth, and wait for server start
196195
run: |
196+
brew upgrade || true
197197
export PATH="$(brew --prefix)/opt/postgresql@14/bin:$PATH" PGDATA=/tmp/vapor-postgres-test
198-
(brew unlink postgresql || true) && brew install "postgresql@15" && brew link --force "postgresql@15"
198+
(brew unlink postgresql@14 || true) && brew install "postgresql@15" && brew link --force "postgresql@15"
199199
initdb --locale=C --auth-host "scram-sha-256" -U "${POSTGRES_USER}" --pwfile=<(echo "${POSTGRES_PASSWORD}")
200200
pg_ctl start --wait
201-
timeout-minutes: 2
201+
timeout-minutes: 15
202202
- name: Checkout code
203203
uses: actions/checkout@v4
204204
- name: Run local tests

Package.swift

+31-14
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// swift-tools-version:5.7
1+
// swift-tools-version:5.8
22
import PackageDescription
33

44
let package = Package(
@@ -13,21 +13,38 @@ let package = Package(
1313
.library(name: "PostgresKit", targets: ["PostgresKit"]),
1414
],
1515
dependencies: [
16-
.package(url: "https://github.com/vapor/postgres-nio.git", from: "1.14.2"),
16+
.package(url: "https://github.com/vapor/postgres-nio.git", from: "1.20.2"),
1717
.package(url: "https://github.com/vapor/sql-kit.git", from: "3.28.0"),
18-
.package(url: "https://github.com/vapor/async-kit.git", from: "1.14.0"),
19-
.package(url: "https://github.com/apple/swift-atomics.git", from: "1.1.0")
18+
.package(url: "https://github.com/vapor/async-kit.git", from: "1.19.0"),
19+
.package(url: "https://github.com/apple/swift-atomics.git", from: "1.2.0")
2020
],
2121
targets: [
22-
.target(name: "PostgresKit", dependencies: [
23-
.product(name: "AsyncKit", package: "async-kit"),
24-
.product(name: "PostgresNIO", package: "postgres-nio"),
25-
.product(name: "SQLKit", package: "sql-kit"),
26-
.product(name: "Atomics", package: "swift-atomics")
27-
]),
28-
.testTarget(name: "PostgresKitTests", dependencies: [
29-
.target(name: "PostgresKit"),
30-
.product(name: "SQLKitBenchmark", package: "sql-kit"),
31-
]),
22+
.target(
23+
name: "PostgresKit",
24+
dependencies: [
25+
.product(name: "AsyncKit", package: "async-kit"),
26+
.product(name: "PostgresNIO", package: "postgres-nio"),
27+
.product(name: "SQLKit", package: "sql-kit"),
28+
.product(name: "Atomics", package: "swift-atomics"),
29+
],
30+
swiftSettings: swiftSettings
31+
),
32+
.testTarget(
33+
name: "PostgresKitTests",
34+
dependencies: [
35+
.target(name: "PostgresKit"),
36+
.product(name: "SQLKitBenchmark", package: "sql-kit"),
37+
],
38+
swiftSettings: swiftSettings
39+
),
3240
]
3341
)
42+
43+
var swiftSettings: [SwiftSetting] { [
44+
.enableUpcomingFeature("ExistentialAny"),
45+
.enableUpcomingFeature("ConciseMagicFile"),
46+
.enableUpcomingFeature("ForwardTrailingClosures"),
47+
.enableUpcomingFeature("DisableOutwardActorInference"),
48+
.enableUpcomingFeature("StrictConcurrency"),
49+
.enableExperimentalFeature("StrictConcurrency=complete"),
50+
] }

Package@swift-5.9.swift

-49
This file was deleted.

README.md

+3-10
Original file line numberDiff line numberDiff line change
@@ -11,26 +11,19 @@
1111
<a href="LICENSE"><img src="https://design.vapor.codes/images/mitlicense.svg" alt="MIT License"></a>
1212
<a href="https://github.com/vapor/postgres-kit/actions/workflows/test.yml"><img src="https://img.shields.io/github/actions/workflow/status/vapor/postgres-kit/test.yml?event=push&style=plastic&logo=github&label=tests&logoColor=%23ccc" alt="Continuous Integration"></a>
1313
<a href="https://codecov.io/github/vapor/postgres-kit"><img src="https://img.shields.io/codecov/c/github/vapor/postgres-kit?style=plastic&logo=codecov&label=codecov"></a>
14-
<a href="https://swift.org"><img src="https://design.vapor.codes/images/swift57up.svg" alt="Swift 5.7+"></a>
14+
<a href="https://swift.org"><img src="https://design.vapor.codes/images/swift58up.svg" alt="Swift 5.8+"></a>
1515
</p>
1616

1717
<br>
1818

1919
🐘 Non-blocking, event-driven Swift client for PostgreSQL.
2020

21-
### Major Releases
22-
23-
The table below shows a list of PostgresKit major releases alongside their compatible NIO and Swift versions.
24-
25-
|Version|NIO|Swift|SPM|
26-
|-|-|-|-|
27-
|2.0|2.0|5.2+|`from: "2.0.0"`|
28-
|1.0|1.0|4.0+|`from: "1.0.0"`|
21+
### Usage
2922

3023
Use the SPM string to easily include the dependendency in your `Package.swift` file.
3124

3225
```swift
33-
.package(url: "https://github.com/vapor/postgres-kit.git", from: ...)
26+
.package(url: "https://github.com/vapor/postgres-kit.git", from: "2.0.0")
3427
```
3528

3629
### Supported Platforms

Sources/PostgresKit/ConnectionPool+Postgres.swift

+6-3
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,13 @@ extension EventLoopConnectionPool where Source == PostgresConnectionSource {
1515
}
1616
}
1717

18-
1918
private struct _EventLoopGroupConnectionPoolPostgresDatabase: PostgresDatabase {
2019
let pool: EventLoopGroupConnectionPool<PostgresConnectionSource>
2120
let logger: Logger
2221

23-
var eventLoop: any EventLoop { self.pool.eventLoopGroup.any() }
22+
var eventLoop: any EventLoop {
23+
self.pool.eventLoopGroup.any()
24+
}
2425

2526
func send(_ request: any PostgresRequest, logger: Logger) -> EventLoopFuture<Void> {
2627
self.pool.withConnection(logger: logger) { $0.send(request, logger: logger) }
@@ -35,7 +36,9 @@ private struct _EventLoopConnectionPoolPostgresDatabase: PostgresDatabase {
3536
let pool: EventLoopConnectionPool<PostgresConnectionSource>
3637
let logger: Logger
3738

38-
var eventLoop: any EventLoop { self.pool.eventLoop }
39+
var eventLoop: any EventLoop {
40+
self.pool.eventLoop
41+
}
3942

4043
func send(_ request: any PostgresRequest, logger: Logger) -> EventLoopFuture<Void> {
4144
self.pool.withConnection(logger: logger) { $0.send(request, logger: logger) }
Loading

Sources/PostgresKit/Exports.swift

-11
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,4 @@
1-
#if swift(>=5.8)
2-
31
@_documentation(visibility: internal) @_exported import AsyncKit
42
@_documentation(visibility: internal) @_exported import PostgresNIO
53
@_documentation(visibility: internal) @_exported import SQLKit
64
@_documentation(visibility: internal) @_exported import struct Foundation.URL
7-
8-
#else
9-
10-
@_exported import AsyncKit
11-
@_exported import PostgresNIO
12-
@_exported import SQLKit
13-
@_exported import struct Foundation.URL
14-
15-
#endif

Sources/PostgresKit/PostgresConnectionSource.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -39,4 +39,4 @@ public struct PostgresConnectionSource: ConnectionPoolSource {
3939
}
4040
}
4141

42-
extension PostgresConnection: ConnectionPoolItem { }
42+
extension PostgresConnection: ConnectionPoolItem {}

0 commit comments

Comments
 (0)