Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 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"),
] }
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)
}
}
2 changes: 1 addition & 1 deletion Sources/FluentPostGIS/Queries/QueryBuilder+Disjoint.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 filterGeometryDisjoint(_ args: SQLExpression...) -> Self {
public func filterGeometryDisjoint(_ args: any SQLExpression...) -> Self {
self.filter(function: "ST_Disjoint", args: args)
}
}
Loading