Skip to content

Commit 82b4d90

Browse files
committed
1 parent 2a3318e commit 82b4d90

20 files changed

+119
-59
lines changed

GRDB/Core/Cursor.swift

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -690,14 +690,18 @@ public final class AnyCursor<Element>: Cursor {
690690

691691
/// Creates a cursor that wraps a base iterator but whose type depends only
692692
/// on the base iterator’s element type
693-
public convenience init(iterator: some IteratorProtocol<Element>) {
693+
public convenience init<I>(iterator: I)
694+
where I: IteratorProtocol, I.Element == Element
695+
{
694696
var iterator = iterator
695697
self.init { iterator.next() }
696698
}
697699

698700
/// Creates a cursor that wraps a base sequence but whose type depends only
699701
/// on the base sequence’s element type
700-
public convenience init(_ s: some Sequence<Element>) {
702+
public convenience init<S>(_ s: S)
703+
where S: Sequence, S.Element == Element
704+
{
701705
self.init(iterator: s.makeIterator())
702706
}
703707

GRDB/Core/Database+Schema.swift

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -485,10 +485,11 @@ extension Database {
485485
/// try db.table("t", hasUniqueKey: ["c"]) // false
486486
/// try db.table("t", hasUniqueKey: ["id", "a"]) // true
487487
/// try db.table("t", hasUniqueKey: ["id", "a", "b", "c"]) // true
488-
public func table(
488+
public func table<Columns>(
489489
_ tableName: String,
490-
hasUniqueKey columns: some Sequence<String>)
490+
hasUniqueKey columns: Columns)
491491
throws -> Bool
492+
where Columns: Sequence, Columns.Element == String
492493
{
493494
try columnsForUniqueKey(Array(columns), in: tableName) != nil
494495
}
@@ -725,10 +726,11 @@ extension Database {
725726
/// returns the columns of the unique key, ordered as the matching index (or
726727
/// primary key). The case of returned columns is not guaranteed to match
727728
/// the case of input columns.
728-
func columnsForUniqueKey(
729-
_ columns: some Sequence<String>,
729+
func columnsForUniqueKey<Columns>(
730+
_ columns: Columns,
730731
in tableName: String)
731732
throws -> [String]?
733+
where Columns: Sequence, Columns.Element == String
732734
{
733735
let lowercasedColumns = Set(columns.map { $0.lowercased() })
734736
if lowercasedColumns.isEmpty {

GRDB/Core/DatabaseValue.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
import Foundation
1+
// TODO: remove @preconcurrency when Data conformance to Sendable is exposed.
2+
@preconcurrency import Foundation
23

34
// MARK: - DatabaseValue
45

GRDB/Core/DatabaseWriter.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -625,7 +625,7 @@ extension DatabasePublishers {
625625
public typealias Output = Output
626626
public typealias Failure = Error
627627

628-
fileprivate let upstream: any Publisher<Output, Error>
628+
fileprivate let upstream: AnyPublisher<Output, Error>
629629

630630
public func receive<S>(subscriber: S) where S: Subscriber, Self.Failure == S.Failure, Self.Output == S.Input {
631631
upstream.receive(subscriber: subscriber)
@@ -636,7 +636,7 @@ extension DatabasePublishers {
636636
@available(OSX 10.15, iOS 13, tvOS 13, watchOS 6, *)
637637
extension Publisher where Failure == Error {
638638
fileprivate func eraseToWritePublisher() -> DatabasePublishers.Write<Output> {
639-
.init(upstream: self)
639+
.init(upstream: self.eraseToAnyPublisher())
640640
}
641641
}
642642
#endif

GRDB/Core/Row.swift

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2029,7 +2029,9 @@ extension RowImpl {
20292029
struct ArrayRowImpl: RowImpl {
20302030
let columns: [(String, DatabaseValue)]
20312031

2032-
init(columns: some Collection<(String, DatabaseValue)>) {
2032+
init<Columns>(columns: Columns)
2033+
where Columns: Collection, Columns.Element == (String, DatabaseValue)
2034+
{
20332035
self.columns = Array(columns)
20342036
}
20352037

GRDB/Core/RowAdapter.swift

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,9 @@ public struct _LayoutedColumnMapping {
7373
///
7474
/// // [foo:"foo" bar: "bar"]
7575
/// try Row.fetchOne(db, sql: "SELECT NULL, 'foo', 'bar'", adapter: FooBarAdapter())
76-
init(layoutColumns: some Sequence<(Int, String)>) {
76+
init<S>(layoutColumns: S)
77+
where S: Sequence, S.Element == (Int, String)
78+
{
7779
self._layoutColumns = Array(layoutColumns)
7880
self.lowercaseColumnIndexes = Dictionary(
7981
layoutColumns

GRDB/Core/SQL.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -248,7 +248,7 @@ extension SQL: SQLOrderingTerm {
248248
}
249249
}
250250

251-
extension Sequence<SQL> {
251+
extension Sequence where Element == SQL {
252252
/// Returns the concatenated `SQL` literal of this sequence of literals,
253253
/// inserting the given raw SQL separator between each element.
254254
///
@@ -272,7 +272,7 @@ extension Sequence<SQL> {
272272
}
273273
}
274274

275-
extension Collection<SQL> {
275+
extension Collection where Element == SQL {
276276
/// Returns the concatenated `SQL` literal of this collection of literals,
277277
/// inserting the given raw SQL separator between each element.
278278
///

GRDB/Core/Statement.swift

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -651,7 +651,9 @@ public struct StatementArguments: CustomStringConvertible, Hashable,
651651
///
652652
/// - parameter sequence: A sequence of DatabaseValueConvertible values.
653653
/// - returns: A StatementArguments.
654-
public init(_ sequence: some Sequence<(any DatabaseValueConvertible)?>) {
654+
public init<S>(_ sequence: S)
655+
where S: Sequence, S.Element == (any DatabaseValueConvertible)?
656+
{
655657
values = sequence.map { $0?.databaseValue ?? .null }
656658
namedValues = .init()
657659
}
@@ -663,7 +665,9 @@ public struct StatementArguments: CustomStringConvertible, Hashable,
663665
///
664666
/// - parameter sequence: A sequence of DatabaseValueConvertible values.
665667
/// - returns: A StatementArguments.
666-
public init(_ sequence: some Sequence<some DatabaseValueConvertible>) {
668+
public init<S>(_ sequence: S)
669+
where S: Sequence, S.Element: DatabaseValueConvertible
670+
{
667671
values = sequence.map(\.databaseValue)
668672
namedValues = .init()
669673
}
@@ -712,7 +716,9 @@ public struct StatementArguments: CustomStringConvertible, Hashable,
712716
///
713717
/// - parameter sequence: A sequence of (key, value) pairs
714718
/// - returns: A StatementArguments.
715-
public init(_ sequence: some Sequence<(String, (any DatabaseValueConvertible)?)>) {
719+
public init<S>(_ sequence: S)
720+
where S: Sequence, S.Element == (String, (any DatabaseValueConvertible)?)
721+
{
716722
namedValues = .init(minimumCapacity: sequence.underestimatedCount)
717723
for (key, value) in sequence {
718724
namedValues[key] = value?.databaseValue ?? .null

GRDB/Migration/DatabaseMigrator.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -482,6 +482,7 @@ extension DatabaseMigrator {
482482
}
483483
}
484484
.receiveValues(on: scheduler)
485+
.eraseToAnyPublisher()
485486
)
486487
}
487488
}
@@ -496,7 +497,7 @@ extension DatabasePublishers {
496497
public typealias Output = Void
497498
public typealias Failure = Error
498499

499-
fileprivate let upstream: any Publisher<Void, Error>
500+
fileprivate let upstream: AnyPublisher<Void, Error>
500501

501502
public func receive<S>(subscriber: S) where S: Subscriber, Self.Failure == S.Failure, Self.Output == S.Input {
502503
upstream.receive(subscriber: subscriber)

GRDB/QueryInterface/Request/RequestProtocols.swift

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -277,7 +277,9 @@ extension TableRequest where Self: FilteredRequest, Self: TypedRequest {
277277
/// let request = try Player...filter(rawKeys: [1, 2, 3])
278278
///
279279
/// - parameter keys: A collection of primary keys
280-
func filter(rawKeys: some Sequence<some DatabaseValueConvertible>) -> Self {
280+
func filter<Keys>(rawKeys: Keys) -> Self
281+
where Keys: Sequence, Keys.Element: DatabaseValueConvertible
282+
{
281283
// Don't bother removing NULLs. We'd lose CPU cycles, and this does not
282284
// change the SQLite results anyway.
283285
let expressions = rawKeys.map {
@@ -390,7 +392,9 @@ where Self: FilteredRequest,
390392
/// let request = try Player...filter(ids: [1, 2, 3])
391393
///
392394
/// - parameter ids: A collection of primary keys
393-
public func filter(ids: some Collection<RowDecoder.ID>) -> Self {
395+
public func filter<IDS>(ids: IDS) -> Self
396+
where IDS: Collection, IDS.Element == RowDecoder.ID
397+
{
394398
filter(keys: ids)
395399
}
396400
}

0 commit comments

Comments
 (0)