Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .swiftformat
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
--extensionacl on-declarations
--header strip
--maxwidth 100
--maxwidth 140
--self insert
--swiftversion 5.5
--swiftversion 5.10
--wraparguments before-first
--wrapcollections before-first
--wrapparameters before-first
23 changes: 17 additions & 6 deletions Package.swift
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// swift-tools-version:5.9
// swift-tools-version:5.10
import PackageDescription

let package = Package(
Expand All @@ -7,11 +7,11 @@ let package = Package(
.macOS(.v12),
],
products: [
.library( name: "FluentPostGIS", targets: ["FluentPostGIS"] ),
.library(name: "FluentPostGIS", targets: ["FluentPostGIS"]),
],
dependencies: [
.package(url: "https://github.com/vapor/fluent-kit.git", from: "1.49.0"),
.package(url: "https://github.com/vapor/fluent-postgres-driver.git", from: "2.10.0"),
.package(url: "https://github.com/vapor/fluent-kit.git", from: "1.52.2"),
.package(url: "https://github.com/vapor/fluent-postgres-driver.git", from: "2.10.1"),
.package(url: "https://github.com/rabc/WKCodable.git", from: "0.1.2"),
],
targets: [
Expand All @@ -21,14 +21,25 @@ let package = Package(
.product(name: "FluentKit", package: "fluent-kit"),
.product(name: "FluentPostgresDriver", package: "fluent-postgres-driver"),
.product(name: "WKCodable", package: "WKCodable"),
]
],
swiftSettings: swiftSettings
),
.testTarget(
name: "FluentPostGISTests",
dependencies: [
.target(name: "FluentPostGIS"),
.product(name: "FluentBenchmark", package: "fluent-kit"),
]
],
swiftSettings: swiftSettings
),
]
)

var swiftSettings: [SwiftSetting] { [
.enableUpcomingFeature("ExistentialAny"),
.enableUpcomingFeature("ConciseMagicFile"),
.enableUpcomingFeature("ForwardTrailingClosures"),
.enableUpcomingFeature("DisableOutwardActorInference"),
.enableUpcomingFeature("StrictConcurrency"),
.enableExperimentalFeature("StrictConcurrency=complete"),
] }
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ app.migrations.add(EnablePostGISMigration())
Add a type to your model

```swift
final class User: Model {
final class User: Model, @unchecked Sendable {
static let schema = "user"

@ID(key: .id)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import FluentKit
import WKCodable

public struct GeographicGeometryCollection2D: Codable, Equatable, CustomStringConvertible {
public struct GeographicGeometryCollection2D: Codable, Equatable, CustomStringConvertible, Sendable {
/// The points
public let geometries: [GeometryCollectable]
public let geometries: [any GeometryCollectable]

/// Create a new `GISGeographicGeometryCollection2D`
public init(geometries: [GeometryCollectable]) {
public init(geometries: [any GeometryCollectable]) {
self.geometries = geometries
}
}
Expand Down Expand Up @@ -43,17 +43,17 @@ extension GeographicGeometryCollection2D: GeometryConvertible, GeometryCollectab
return .init(geometries: geometries, srid: FluentPostGISSrid)
}

public var baseGeometry: Geometry {
public var baseGeometry: any Geometry {
self.geometry
}

public init(from decoder: Decoder) throws {
public init(from decoder: any Decoder) throws {
let value = try decoder.singleValueContainer().decode(String.self)
let wkbGeometry: GeometryCollection = try WKTDecoder().decode(from: value)
self.init(geometry: wkbGeometry)
}

public func encode(to encoder: Encoder) throws {
public func encode(to encoder: any Encoder) throws {
let wktEncoder = WKTEncoder()
let value = wktEncoder.encode(self.geometry)
var container = encoder.singleValueContainer()
Expand Down
4 changes: 2 additions & 2 deletions Sources/FluentPostGIS/Geography/GeographicLineString2D.swift
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import FluentKit
import WKCodable

public struct GeographicLineString2D: Codable, Equatable, CustomStringConvertible {
public struct GeographicLineString2D: Codable, Equatable, CustomStringConvertible, Sendable {
/// The points
public var points: [GeographicPoint2D]

Expand All @@ -24,7 +24,7 @@ extension GeographicLineString2D: GeometryConvertible, GeometryCollectable {
.init(points: self.points.map(\.geometry), srid: FluentPostGISSrid)
}

public var baseGeometry: Geometry {
public var baseGeometry: any Geometry {
self.geometry
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import FluentKit
import WKCodable

public struct GeographicMultiLineString2D: Codable, Equatable, CustomStringConvertible {
public struct GeographicMultiLineString2D: Codable, Equatable, CustomStringConvertible, Sendable {
/// The points
public let lineStrings: [GeographicLineString2D]

Expand All @@ -25,7 +25,7 @@ extension GeographicMultiLineString2D: GeometryConvertible, GeometryCollectable
return .init(lineStrings: lineStrings, srid: FluentPostGISSrid)
}

public var baseGeometry: Geometry {
public var baseGeometry: any Geometry {
self.geometry
}
}
4 changes: 2 additions & 2 deletions Sources/FluentPostGIS/Geography/GeographicMultiPoint2D.swift
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import FluentKit
import WKCodable

public struct GeographicMultiPoint2D: Codable, Equatable, CustomStringConvertible {
public struct GeographicMultiPoint2D: Codable, Equatable, CustomStringConvertible, Sendable {
/// The points
public var points: [GeographicPoint2D]

Expand All @@ -24,7 +24,7 @@ extension GeographicMultiPoint2D: GeometryConvertible, GeometryCollectable {
.init(points: self.points.map(\.geometry), srid: FluentPostGISSrid)
}

public var baseGeometry: Geometry {
public var baseGeometry: any Geometry {
self.geometry
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import FluentKit
import WKCodable

public struct GeographicMultiPolygon2D: Codable, Equatable, CustomStringConvertible {
public struct GeographicMultiPolygon2D: Codable, Equatable, CustomStringConvertible, Sendable {
/// The points
public let polygons: [GeographicPolygon2D]

Expand All @@ -25,7 +25,7 @@ extension GeographicMultiPolygon2D: GeometryConvertible, GeometryCollectable {
return .init(polygons: polygons, srid: FluentPostGISSrid)
}

public var baseGeometry: Geometry {
public var baseGeometry: any Geometry {
self.geometry
}
}
4 changes: 2 additions & 2 deletions Sources/FluentPostGIS/Geography/GeographicPoint2D.swift
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import FluentKit
import WKCodable

public struct GeographicPoint2D: Codable, Equatable, CustomStringConvertible {
public struct GeographicPoint2D: Codable, Equatable, CustomStringConvertible, Sendable {
/// The point's x coordinate.
public var longitude: Double

Expand All @@ -27,7 +27,7 @@ extension GeographicPoint2D: GeometryConvertible, GeometryCollectable {
.init(vector: [self.longitude, self.latitude], srid: FluentPostGISSrid)
}

public var baseGeometry: Geometry {
public var baseGeometry: any Geometry {
self.geometry
}
}
4 changes: 2 additions & 2 deletions Sources/FluentPostGIS/Geography/GeographicPolygon2D.swift
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import FluentKit
import WKCodable

public struct GeographicPolygon2D: Codable, Equatable, CustomStringConvertible {
public struct GeographicPolygon2D: Codable, Equatable, CustomStringConvertible, Sendable {
/// The points
public let exteriorRing: GeographicLineString2D
public let interiorRings: [GeographicLineString2D]
Expand Down Expand Up @@ -37,7 +37,7 @@ extension GeographicPolygon2D: GeometryConvertible, GeometryCollectable {
)
}

public var baseGeometry: Geometry {
public var baseGeometry: any Geometry {
self.geometry
}
}
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import FluentKit
import WKCodable

public struct GeometricGeometryCollection2D: Codable, Equatable, CustomStringConvertible {
public struct GeometricGeometryCollection2D: Codable, Equatable, CustomStringConvertible, Sendable {
/// The points
public let geometries: [GeometryCollectable]
public let geometries: [any GeometryCollectable]

/// Create a new `GISGeometricGeometryCollection2D`
public init(geometries: [GeometryCollectable]) {
public init(geometries: [any GeometryCollectable]) {
self.geometries = geometries
}
}
Expand Down Expand Up @@ -42,7 +42,7 @@ extension GeometricGeometryCollection2D: GeometryConvertible, GeometryCollectabl
return .init(geometries: geometries, srid: FluentPostGISSrid)
}

public var baseGeometry: Geometry {
public var baseGeometry: any Geometry {
self.geometry
}

Expand Down
4 changes: 2 additions & 2 deletions Sources/FluentPostGIS/Geometry/GeometricLineString2D.swift
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import FluentKit
import WKCodable

public struct GeometricLineString2D: Codable, Equatable, CustomStringConvertible {
public struct GeometricLineString2D: Codable, Equatable, CustomStringConvertible, Sendable {
/// The points
public var points: [GeometricPoint2D]

Expand All @@ -24,7 +24,7 @@ extension GeometricLineString2D: GeometryConvertible, GeometryCollectable {
.init(points: self.points.map(\.geometry), srid: FluentPostGISSrid)
}

public var baseGeometry: Geometry {
public var baseGeometry: any Geometry {
self.geometry
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import FluentKit
import WKCodable

public struct GeometricMultiLineString2D: Codable, Equatable, CustomStringConvertible {
public struct GeometricMultiLineString2D: Codable, Equatable, CustomStringConvertible, Sendable {
/// The points
public let lineStrings: [GeometricLineString2D]

Expand All @@ -25,7 +25,7 @@ extension GeometricMultiLineString2D: GeometryConvertible, GeometryCollectable {
return .init(lineStrings: lineStrings, srid: FluentPostGISSrid)
}

public var baseGeometry: Geometry {
public var baseGeometry: any Geometry {
self.geometry
}
}
4 changes: 2 additions & 2 deletions Sources/FluentPostGIS/Geometry/GeometricMultiPoint2D.swift
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import FluentKit
import WKCodable

public struct GeometricMultiPoint2D: Codable, Equatable, CustomStringConvertible {
public struct GeometricMultiPoint2D: Codable, Equatable, CustomStringConvertible, Sendable {
/// The points
public var points: [GeometricPoint2D]

Expand All @@ -24,7 +24,7 @@ extension GeometricMultiPoint2D: GeometryConvertible, GeometryCollectable {
MultiPoint(points: self.points.map(\.geometry), srid: FluentPostGISSrid)
}

public var baseGeometry: Geometry {
public var baseGeometry: any Geometry {
self.geometry
}
}
4 changes: 2 additions & 2 deletions Sources/FluentPostGIS/Geometry/GeometricMultiPolygon2D.swift
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import FluentKit
import WKCodable

public struct GeometricMultiPolygon2D: Codable, Equatable, CustomStringConvertible {
public struct GeometricMultiPolygon2D: Codable, Equatable, CustomStringConvertible, Sendable {
/// The points
public let polygons: [GeometricPolygon2D]

Expand All @@ -25,7 +25,7 @@ extension GeometricMultiPolygon2D: GeometryConvertible, GeometryCollectable {
return .init(polygons: polygons, srid: FluentPostGISSrid)
}

public var baseGeometry: Geometry {
public var baseGeometry: any Geometry {
self.geometry
}
}
4 changes: 2 additions & 2 deletions Sources/FluentPostGIS/Geometry/GeometricPoint2D.swift
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import FluentKit
import WKCodable

public struct GeometricPoint2D: Codable, Equatable, CustomStringConvertible {
public struct GeometricPoint2D: Codable, Equatable, CustomStringConvertible, Sendable {
/// The point's x coordinate.
public var x: Double

Expand All @@ -27,7 +27,7 @@ extension GeometricPoint2D: GeometryConvertible, GeometryCollectable {
.init(vector: [self.x, self.y], srid: FluentPostGISSrid)
}

public var baseGeometry: Geometry {
public var baseGeometry: any Geometry {
self.geometry
}
}
4 changes: 2 additions & 2 deletions Sources/FluentPostGIS/Geometry/GeometricPolygon2D.swift
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import FluentKit
import WKCodable

public struct GeometricPolygon2D: Codable, Equatable, CustomStringConvertible {
public struct GeometricPolygon2D: Codable, Equatable, CustomStringConvertible, Sendable {
/// The points
public let exteriorRing: GeometricLineString2D
public let interiorRings: [GeometricLineString2D]
Expand Down Expand Up @@ -37,7 +37,7 @@ extension GeometricPolygon2D: GeometryConvertible, GeometryCollectable {
)
}

public var baseGeometry: Geometry {
public var baseGeometry: any Geometry {
self.geometry
}
}
10 changes: 5 additions & 5 deletions Sources/FluentPostGIS/Geometry/GeometryConvertible.swift
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@ import FluentKit
import Foundation
import WKCodable

public protocol GeometryCollectable {
var baseGeometry: Geometry { get }
public protocol GeometryCollectable: Sendable {
var baseGeometry: any Geometry { get }
func isEqual(to other: Any?) -> Bool
}

public protocol GeometryConvertible {
public protocol GeometryConvertible: Sendable {
associatedtype GeometryType: Geometry
init(geometry: GeometryType)
var geometry: GeometryType { get }
Expand All @@ -27,14 +27,14 @@ extension GeometryConvertible where Self: CustomStringConvertible {
}

extension GeometryConvertible {
public init(from decoder: Decoder) throws {
public init(from decoder: any Decoder) throws {
let value = try decoder.singleValueContainer().decode(Data.self)
let decoder = WKBDecoder()
let geometry: GeometryType = try decoder.decode(from: value)
self.init(geometry: geometry)
}

public func encode(to encoder: Encoder) throws {
public func encode(to encoder: any Encoder) throws {
let wkEncoder = WKBEncoder(byteOrder: .littleEndian)
let data = wkEncoder.encode(geometry)

Expand Down
2 changes: 1 addition & 1 deletion Sources/FluentPostGIS/Queries/QueryBuilder+Contains.swift
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ extension QueryBuilder {
/// - parameters:
/// - field: Field to filter.
/// - value: Value type.
public func filterGeometryContains(_ args: SQLExpression...) -> Self {
public func filterGeometryContains(_ args: any SQLExpression...) -> Self {
self.filter(function: "ST_Contains", args: args)
}
}
2 changes: 1 addition & 1 deletion Sources/FluentPostGIS/Queries/QueryBuilder+Crosses.swift
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ extension QueryBuilder {
/// - parameters:
/// - field: Field to filter.
/// - value: Value type.
public func filterGeometryCrosses(_ args: SQLExpression...) -> Self {
public func filterGeometryCrosses(_ args: any SQLExpression...) -> Self {
self.filter(function: "ST_Crosses", args: args)
}
}
Loading