From a9b85f959be2a8d622d1648cb8ed670a39404e2f Mon Sep 17 00:00:00 2001 From: Brandon Williams Date: Tue, 12 Aug 2025 10:29:41 -0500 Subject: [PATCH 1/5] Regenerate macro code for CloudKit tables. --- .../xcshareddata/swiftpm/Package.resolved | 20 ++++++- Package.resolved | 6 +- Package.swift | 2 +- .../CloudKit/RecordType+MacroExpansion.swift | 32 +++++++---- .../StateSerialization+MacroExpansion.swift | 56 +++++++++++++------ .../SyncMetadata+MacroExpansion.swift | 55 +++++++++++------- .../CloudKit/SyncMetadata.swift | 19 ++++--- .../SharingGRDBCore/CloudKit/Triggers.swift | 10 ++-- .../UnsyncedRecordID+MacroExpansion.swift | 29 +++++++--- 9 files changed, 157 insertions(+), 72 deletions(-) diff --git a/Examples/Examples.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/Examples/Examples.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index b78c0c5e..5e9d9dc3 100644 --- a/Examples/Examples.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/Examples/Examples.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -1,5 +1,5 @@ { - "originHash" : "045453ad987825e0124358340f9eb671db13456ca8713bb035043d7c4e34e24b", + "originHash" : "05461ecd2d6ddd848b677fd572ee263adc87ab3aebd38d91f3f4c49ddaf3cdde", "pins" : [ { "identity" : "combine-schedulers", @@ -73,6 +73,24 @@ "version" : "1.9.2" } }, + { + "identity" : "swift-docc-plugin", + "kind" : "remoteSourceControl", + "location" : "https://github.com/apple/swift-docc-plugin", + "state" : { + "revision" : "3e4f133a77e644a5812911a0513aeb7288b07d06", + "version" : "1.4.5" + } + }, + { + "identity" : "swift-docc-symbolkit", + "kind" : "remoteSourceControl", + "location" : "https://github.com/swiftlang/swift-docc-symbolkit", + "state" : { + "revision" : "b45d1f2ed151d057b54504d653e0da5552844e34", + "version" : "1.0.0" + } + }, { "identity" : "swift-identified-collections", "kind" : "remoteSourceControl", diff --git a/Package.resolved b/Package.resolved index c190d59d..731ae517 100644 --- a/Package.resolved +++ b/Package.resolved @@ -1,5 +1,5 @@ { - "originHash" : "b65215507a456e8eb22717bbb2cbc48bd7cf35bae37178bf7fd94e4426160680", + "originHash" : "304d33f17363a8d91fc9762f429327f95ab8d8ea5577c2120d53772b7ac70814", "pins" : [ { "identity" : "combine-schedulers", @@ -123,8 +123,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/pointfreeco/swift-structured-queries", "state" : { - "branch" : "main", - "revision" : "a2a7c06f5b3c60811558bd9552fbbbd0cc027d91" + "branch" : "sendable-triggers", + "revision" : "c56fe85c2963d0beb22a9a8503a01989f4c0a866" } }, { diff --git a/Package.swift b/Package.swift index 62a3f7ad..b8eca291 100644 --- a/Package.swift +++ b/Package.swift @@ -34,7 +34,7 @@ let package = Package( .package(url: "https://github.com/pointfreeco/swift-dependencies", from: "1.9.0"), .package(url: "https://github.com/pointfreeco/swift-sharing", from: "2.3.0"), .package(url: "https://github.com/pointfreeco/swift-snapshot-testing", from: "1.0.0"), - .package(url: "https://github.com/pointfreeco/swift-structured-queries", branch: "main"), + .package(url: "https://github.com/pointfreeco/swift-structured-queries", branch: "sendable-triggers"), .package(url: "https://github.com/pointfreeco/xctest-dynamic-overlay", from: "1.5.0"), ], targets: [ diff --git a/Sources/SharingGRDBCore/CloudKit/RecordType+MacroExpansion.swift b/Sources/SharingGRDBCore/CloudKit/RecordType+MacroExpansion.swift index c9aec4e2..cacce5ac 100644 --- a/Sources/SharingGRDBCore/CloudKit/RecordType+MacroExpansion.swift +++ b/Sources/SharingGRDBCore/CloudKit/RecordType+MacroExpansion.swift @@ -2,8 +2,8 @@ import StructuredQueriesCore extension RecordType { - public struct TableColumns: StructuredQueriesCore.TableDefinition, StructuredQueriesCore - .PrimaryKeyedTableDefinition + public nonisolated struct TableColumns: StructuredQueriesCore.TableDefinition, + StructuredQueriesCore.PrimaryKeyedTableDefinition { public typealias QueryValue = RecordType public let tableName = StructuredQueriesCore.TableColumn( @@ -36,7 +36,7 @@ package let tableName: String? package let schema: String package let tableInfo: Set - public struct TableColumns: StructuredQueriesCore.TableDefinition { + public nonisolated struct TableColumns: StructuredQueriesCore.TableDefinition { public typealias QueryValue = Draft public let tableName = StructuredQueriesCore.TableColumn( "tableName", @@ -60,11 +60,15 @@ "\(self.tableName), \(self.schema), \(self.tableInfo)" } } - public static let columns = TableColumns() + public nonisolated static var columns: TableColumns { + TableColumns() + } - public static let tableName = RecordType.tableName + public nonisolated static var tableName: String { + RecordType.tableName + } - public init(decoder: inout some StructuredQueriesCore.QueryDecoder) throws { + public nonisolated init(decoder: inout some StructuredQueriesCore.QueryDecoder) throws { self.tableName = try decoder.decode(String.self) let schema = try decoder.decode(String.self) let tableInfo = try decoder.decode(Set.JSONRepresentation.self) @@ -78,7 +82,7 @@ self.tableInfo = tableInfo } - public init(_ other: RecordType) { + public nonisolated init(_ other: RecordType) { self.tableName = other.tableName self.schema = other.schema self.tableInfo = other.tableInfo @@ -95,10 +99,16 @@ } } - extension RecordType: StructuredQueriesCore.Table, StructuredQueriesCore.PrimaryKeyedTable { - public static let columns = TableColumns() - public static let tableName = "sqlitedata_icloud_recordTypes" - public init(decoder: inout some StructuredQueriesCore.QueryDecoder) throws { + nonisolated extension RecordType: StructuredQueriesCore.Table, StructuredQueriesCore + .PrimaryKeyedTable + { + public nonisolated static var columns: TableColumns { + TableColumns() + } + public nonisolated static var tableName: String { + "sqlitedata_icloud_recordTypes" + } + public nonisolated init(decoder: inout some StructuredQueriesCore.QueryDecoder) throws { let tableName = try decoder.decode(String.self) let schema = try decoder.decode(String.self) let tableInfo = try decoder.decode(Set.JSONRepresentation.self) diff --git a/Sources/SharingGRDBCore/CloudKit/StateSerialization+MacroExpansion.swift b/Sources/SharingGRDBCore/CloudKit/StateSerialization+MacroExpansion.swift index 05c1d19e..4abf88a3 100644 --- a/Sources/SharingGRDBCore/CloudKit/StateSerialization+MacroExpansion.swift +++ b/Sources/SharingGRDBCore/CloudKit/StateSerialization+MacroExpansion.swift @@ -4,11 +4,19 @@ @available(iOS 17, macOS 14, tvOS 17, watchOS 10, *) extension StateSerialization { - public struct TableColumns: StructuredQueriesCore.TableDefinition, StructuredQueriesCore.PrimaryKeyedTableDefinition { + public nonisolated struct TableColumns: StructuredQueriesCore.TableDefinition, + StructuredQueriesCore.PrimaryKeyedTableDefinition + { public typealias QueryValue = StateSerialization - public let scope = StructuredQueriesCore.TableColumn("scope", keyPath: \QueryValue.scope) - public let data = StructuredQueriesCore.TableColumn("data", keyPath: \QueryValue.data) - public var primaryKey: StructuredQueriesCore.TableColumn { + public let scope = StructuredQueriesCore.TableColumn< + QueryValue, CKDatabase.Scope.RawValueRepresentation + >("scope", keyPath: \QueryValue.scope) + public let data = StructuredQueriesCore.TableColumn< + QueryValue, CKSyncEngine.State.Serialization.JSONRepresentation + >("data", keyPath: \QueryValue.data) + public var primaryKey: + StructuredQueriesCore.TableColumn + { self.scope } public static var allColumns: [any StructuredQueriesCore.TableColumnExpression] { @@ -26,25 +34,34 @@ public typealias PrimaryTable = StateSerialization package var scope: CKDatabase.Scope? package var data: CKSyncEngine.State.Serialization - public struct TableColumns: StructuredQueriesCore.TableDefinition { + public nonisolated struct TableColumns: StructuredQueriesCore.TableDefinition { public typealias QueryValue = Draft - public let scope = StructuredQueriesCore.TableColumn("scope", keyPath: \QueryValue.scope) - public let data = StructuredQueriesCore.TableColumn("data", keyPath: \QueryValue.data) + public let scope = StructuredQueriesCore.TableColumn< + QueryValue, CKDatabase.Scope.RawValueRepresentation? + >("scope", keyPath: \QueryValue.scope) + public let data = StructuredQueriesCore.TableColumn< + QueryValue, CKSyncEngine.State.Serialization.JSONRepresentation + >("data", keyPath: \QueryValue.data) public static var allColumns: [any StructuredQueriesCore.TableColumnExpression] { [QueryValue.columns.scope, QueryValue.columns.data] } - public static var writableColumns: [any StructuredQueriesCore.WritableTableColumnExpression] { + public static var writableColumns: [any StructuredQueriesCore.WritableTableColumnExpression] + { [QueryValue.columns.scope, QueryValue.columns.data] } public var queryFragment: QueryFragment { "\(self.scope), \(self.data)" } } - public static let columns = TableColumns() + public nonisolated static var columns: TableColumns { + TableColumns() + } - public static let tableName = StateSerialization.tableName + public nonisolated static var tableName: String { + StateSerialization.tableName + } - public init(decoder: inout some StructuredQueriesCore.QueryDecoder) throws { + public nonisolated init(decoder: inout some StructuredQueriesCore.QueryDecoder) throws { self.scope = try decoder.decode(CKDatabase.Scope.RawValueRepresentation.self) let data = try decoder.decode(CKSyncEngine.State.Serialization.JSONRepresentation.self) guard let data else { @@ -53,7 +70,7 @@ self.data = data } - public init(_ other: StateSerialization) { + public nonisolated init(_ other: StateSerialization) { self.scope = other.scope self.data = other.data } @@ -67,10 +84,17 @@ } } - @available(iOS 17, macOS 14, tvOS 17, watchOS 10, *) extension StateSerialization: StructuredQueriesCore.Table, StructuredQueriesCore.PrimaryKeyedTable { - public static let columns = TableColumns() - public static let tableName = "sqlitedata_icloud_stateSerialization" - public init(decoder: inout some StructuredQueriesCore.QueryDecoder) throws { + @available(iOS 17, macOS 14, tvOS 17, watchOS 10, *) + nonisolated extension StateSerialization: StructuredQueriesCore.Table, StructuredQueriesCore + .PrimaryKeyedTable + { + public nonisolated static var columns: TableColumns { + TableColumns() + } + public nonisolated static var tableName: String { + "sqlitedata_icloud_stateSerialization" + } + public nonisolated init(decoder: inout some StructuredQueriesCore.QueryDecoder) throws { let scope = try decoder.decode(CKDatabase.Scope.RawValueRepresentation.self) let data = try decoder.decode(CKSyncEngine.State.Serialization.JSONRepresentation.self) guard let scope else { diff --git a/Sources/SharingGRDBCore/CloudKit/SyncMetadata+MacroExpansion.swift b/Sources/SharingGRDBCore/CloudKit/SyncMetadata+MacroExpansion.swift index f2c488aa..5b469970 100644 --- a/Sources/SharingGRDBCore/CloudKit/SyncMetadata+MacroExpansion.swift +++ b/Sources/SharingGRDBCore/CloudKit/SyncMetadata+MacroExpansion.swift @@ -3,7 +3,7 @@ @available(iOS 17, macOS 14, tvOS 17, watchOS 10, *) extension SyncMetadata { - public struct TableColumns: StructuredQueriesCore.TableDefinition { + public nonisolated struct TableColumns: StructuredQueriesCore.TableDefinition { public typealias QueryValue = SyncMetadata public let recordPrimaryKey = StructuredQueriesCore.TableColumn( "recordPrimaryKey", @@ -36,8 +36,8 @@ public let lastKnownServerRecord = StructuredQueriesCore.TableColumn< QueryValue, CKRecord?.SystemFieldsRepresentation >("lastKnownServerRecord", keyPath: \QueryValue.lastKnownServerRecord) - package let _lastKnownServerRecordAllFields = StructuredQueriesCore.TableColumn< - QueryValue, CKRecord?.AllFieldsRepresentation + public let _lastKnownServerRecordAllFields = StructuredQueriesCore.TableColumn< + QueryValue, CKRecord?.SystemFieldsRepresentation >("_lastKnownServerRecordAllFields", keyPath: \QueryValue._lastKnownServerRecordAllFields) public let share = StructuredQueriesCore.TableColumn< QueryValue, CKShare?.SystemFieldsRepresentation @@ -58,8 +58,7 @@ QueryValue.columns.recordName, QueryValue.columns.parentRecordPrimaryKey, QueryValue.columns.parentRecordType, QueryValue.columns.parentRecordName, QueryValue.columns.lastKnownServerRecord, - QueryValue.columns._lastKnownServerRecordAllFields, - QueryValue.columns.share, + QueryValue.columns._lastKnownServerRecordAllFields, QueryValue.columns.share, QueryValue.columns.isShared, QueryValue.columns.userModificationDate, ] } @@ -68,8 +67,7 @@ QueryValue.columns.recordPrimaryKey, QueryValue.columns.recordType, QueryValue.columns.parentRecordPrimaryKey, QueryValue.columns.parentRecordType, QueryValue.columns.lastKnownServerRecord, - QueryValue.columns._lastKnownServerRecordAllFields, - QueryValue.columns.share, + QueryValue.columns._lastKnownServerRecordAllFields, QueryValue.columns.share, QueryValue.columns.userModificationDate, ] } @@ -80,10 +78,14 @@ } @available(iOS 17, macOS 14, tvOS 17, watchOS 10, *) - extension SyncMetadata: StructuredQueriesCore.Table { - public static let columns = TableColumns() - public static let tableName = "sqlitedata_icloud_metadata" - public init(decoder: inout some StructuredQueriesCore.QueryDecoder) throws { + nonisolated extension SyncMetadata: StructuredQueriesCore.Table { + public nonisolated static var columns: TableColumns { + TableColumns() + } + public nonisolated static var tableName: String { + "sqlitedata_icloud_metadata" + } + public nonisolated init(decoder: inout some StructuredQueriesCore.QueryDecoder) throws { let recordPrimaryKey = try decoder.decode(String.self) let recordType = try decoder.decode(String.self) let recordName = try decoder.decode(String.self) @@ -92,7 +94,7 @@ self.parentRecordName = try decoder.decode(String.self) let lastKnownServerRecord = try decoder.decode(CKRecord?.SystemFieldsRepresentation.self) let _lastKnownServerRecordAllFields = try decoder.decode( - CKRecord?.AllFieldsRepresentation.self + CKRecord?.SystemFieldsRepresentation.self ) let share = try decoder.decode(CKShare?.SystemFieldsRepresentation.self) let isShared = try decoder.decode(Bool.self) @@ -133,9 +135,9 @@ } @available(iOS 17, macOS 14, tvOS 17, watchOS 10, *) - extension SyncMetadata.AncestorMetadata { + extension AncestorMetadata { public struct Columns: StructuredQueriesCore.QueryExpression { - public typealias QueryValue = SyncMetadata.AncestorMetadata + public typealias QueryValue = AncestorMetadata public let queryFragment: StructuredQueriesCore.QueryFragment public init( recordName: some StructuredQueriesCore.QueryExpression, @@ -150,8 +152,8 @@ } } - public struct TableColumns: StructuredQueriesCore.TableDefinition { - public typealias QueryValue = SyncMetadata.AncestorMetadata + public nonisolated struct TableColumns: StructuredQueriesCore.TableDefinition { + public typealias QueryValue = AncestorMetadata public let recordName = StructuredQueriesCore.TableColumn( "recordName", keyPath: \QueryValue.recordName @@ -182,12 +184,24 @@ } @available(iOS 17, macOS 14, tvOS 17, watchOS 10, *) - extension SyncMetadata.AncestorMetadata: StructuredQueriesCore.Table { - public static let columns = TableColumns() - public static let tableName = "ancestorMetadatas" + nonisolated extension AncestorMetadata: StructuredQueriesCore.Table, StructuredQueriesCore + .PartialSelectStatement + { + public typealias QueryValue = Self + public typealias From = Swift.Never + public nonisolated static var columns: TableColumns { + TableColumns() + } + public nonisolated static var tableName: String { + "ancestorMetadatas" + } + } + + @available(iOS 17, macOS 14, tvOS 17, watchOS 10, *) + extension AncestorMetadata: StructuredQueriesCore.QueryRepresentable { public init(decoder: inout some StructuredQueriesCore.QueryDecoder) throws { let recordName = try decoder.decode(String.self) - self.parentRecordName = try decoder.decode(String.self) + let parentRecordName = try decoder.decode(String.self) let lastKnownServerRecord = try decoder.decode(CKRecord?.SystemFieldsRepresentation.self) guard let recordName else { throw QueryDecodingError.missingRequiredColumn @@ -196,6 +210,7 @@ throw QueryDecodingError.missingRequiredColumn } self.recordName = recordName + self.parentRecordName = parentRecordName self.lastKnownServerRecord = lastKnownServerRecord } } diff --git a/Sources/SharingGRDBCore/CloudKit/SyncMetadata.swift b/Sources/SharingGRDBCore/CloudKit/SyncMetadata.swift index ad0d7c82..316eb048 100644 --- a/Sources/SharingGRDBCore/CloudKit/SyncMetadata.swift +++ b/Sources/SharingGRDBCore/CloudKit/SyncMetadata.swift @@ -65,7 +65,19 @@ /// The date the user last modified the record. public var userModificationDate: Date + } + +@available(iOS 17, macOS 14, tvOS 17, watchOS 10, *) +// @Selection @Table +struct AncestorMetadata { + let recordName: String + let parentRecordName: String? + // @Column(as: CKRecord?.SystemFieldsRepresentation.self) + let lastKnownServerRecord: CKRecord? +} + @available(iOS 17, macOS 14, tvOS 17, watchOS 10, *) + extension SyncMetadata { package init( recordPrimaryKey: String, recordType: String, @@ -93,13 +105,6 @@ self.userModificationDate = userModificationDate } - // @Selection @Table - struct AncestorMetadata { - let recordName: String - let parentRecordName: String? - // @Column(as: CKRecord?.SystemFieldsRepresentation.self) - let lastKnownServerRecord: CKRecord? - } } @available(iOS 17, macOS 14, tvOS 17, watchOS 10, *) diff --git a/Sources/SharingGRDBCore/CloudKit/Triggers.swift b/Sources/SharingGRDBCore/CloudKit/Triggers.swift index 93f28061..e2dacc02 100644 --- a/Sources/SharingGRDBCore/CloudKit/Triggers.swift +++ b/Sources/SharingGRDBCore/CloudKit/Triggers.swift @@ -163,22 +163,22 @@ private func rootServerRecord( With { SyncMetadata .where { $0.recordName.eq(recordName) } - .select { SyncMetadata.AncestorMetadata.Columns($0) } + .select { AncestorMetadata.Columns($0) } .union( all: true, SyncMetadata - .select { SyncMetadata.AncestorMetadata.Columns($0) } - .join(SyncMetadata.AncestorMetadata.all) { $0.recordName.is($1.parentRecordName) } + .select { AncestorMetadata.Columns($0) } + .join(AncestorMetadata.all) { $0.recordName.is($1.parentRecordName) } ) } query: { - SyncMetadata.AncestorMetadata + AncestorMetadata .select(\.lastKnownServerRecord) .where { $0.parentRecordName.is(nil) } } } @available(iOS 17, macOS 14, tvOS 17, watchOS 10, *) -extension SyncMetadata.AncestorMetadata.Columns { +extension AncestorMetadata.Columns { fileprivate init(_ metadata: SyncMetadata.TableColumns) { self.init( recordName: metadata.recordName, diff --git a/Sources/SharingGRDBCore/CloudKit/UnsyncedRecordID+MacroExpansion.swift b/Sources/SharingGRDBCore/CloudKit/UnsyncedRecordID+MacroExpansion.swift index b2d23469..a56e54b2 100644 --- a/Sources/SharingGRDBCore/CloudKit/UnsyncedRecordID+MacroExpansion.swift +++ b/Sources/SharingGRDBCore/CloudKit/UnsyncedRecordID+MacroExpansion.swift @@ -1,11 +1,20 @@ import StructuredQueriesCore extension UnsyncedRecordID { - public struct TableColumns: StructuredQueriesCore.TableDefinition { + public nonisolated struct TableColumns: StructuredQueriesCore.TableDefinition { public typealias QueryValue = UnsyncedRecordID - public let recordName = StructuredQueriesCore.TableColumn("recordName", keyPath: \QueryValue.recordName) - public let zoneName = StructuredQueriesCore.TableColumn("zoneName", keyPath: \QueryValue.zoneName) - public let ownerName = StructuredQueriesCore.TableColumn("ownerName", keyPath: \QueryValue.ownerName) + public let recordName = StructuredQueriesCore.TableColumn( + "recordName", + keyPath: \QueryValue.recordName + ) + public let zoneName = StructuredQueriesCore.TableColumn( + "zoneName", + keyPath: \QueryValue.zoneName + ) + public let ownerName = StructuredQueriesCore.TableColumn( + "ownerName", + keyPath: \QueryValue.ownerName + ) public static var allColumns: [any StructuredQueriesCore.TableColumnExpression] { [QueryValue.columns.recordName, QueryValue.columns.zoneName, QueryValue.columns.ownerName] } @@ -18,10 +27,14 @@ extension UnsyncedRecordID { } } -extension UnsyncedRecordID: StructuredQueriesCore.Table { - public static let columns = TableColumns() - public static let tableName = "sqlitedata_icloud_unsyncedRecordIDs" - public init(decoder: inout some StructuredQueriesCore.QueryDecoder) throws { +nonisolated extension UnsyncedRecordID: StructuredQueriesCore.Table { + public nonisolated static var columns: TableColumns { + TableColumns() + } + public nonisolated static var tableName: String { + "sqlitedata_icloud_unsyncedRecordIDs" + } + public nonisolated init(decoder: inout some StructuredQueriesCore.QueryDecoder) throws { let recordName = try decoder.decode(String.self) let zoneName = try decoder.decode(String.self) let ownerName = try decoder.decode(String.self) From 3872717972d29dfc344f7f3dccb4d128a04f2f5d Mon Sep 17 00:00:00 2001 From: Brandon Williams Date: Tue, 12 Aug 2025 10:30:42 -0500 Subject: [PATCH 2/5] formatting --- .../SharingGRDBCore/CloudKit/SyncMetadata.swift | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Sources/SharingGRDBCore/CloudKit/SyncMetadata.swift b/Sources/SharingGRDBCore/CloudKit/SyncMetadata.swift index 316eb048..8e6b50a8 100644 --- a/Sources/SharingGRDBCore/CloudKit/SyncMetadata.swift +++ b/Sources/SharingGRDBCore/CloudKit/SyncMetadata.swift @@ -67,14 +67,14 @@ public var userModificationDate: Date } -@available(iOS 17, macOS 14, tvOS 17, watchOS 10, *) -// @Selection @Table -struct AncestorMetadata { - let recordName: String - let parentRecordName: String? - // @Column(as: CKRecord?.SystemFieldsRepresentation.self) - let lastKnownServerRecord: CKRecord? -} + @available(iOS 17, macOS 14, tvOS 17, watchOS 10, *) + // @Selection @Table + struct AncestorMetadata { + let recordName: String + let parentRecordName: String? + // @Column(as: CKRecord?.SystemFieldsRepresentation.self) + let lastKnownServerRecord: CKRecord? + } @available(iOS 17, macOS 14, tvOS 17, watchOS 10, *) extension SyncMetadata { From 8a297b975a67e678994a25ce4194ec8b6d3a3ed3 Mon Sep 17 00:00:00 2001 From: Brandon Williams Date: Tue, 12 Aug 2025 10:31:16 -0500 Subject: [PATCH 3/5] fix warnings --- .../SharingGRDBTests/CloudKitTests/AccountLifecycleTests.swift | 2 +- .../CloudKitTests/ReferenceViolationTests.swift | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Tests/SharingGRDBTests/CloudKitTests/AccountLifecycleTests.swift b/Tests/SharingGRDBTests/CloudKitTests/AccountLifecycleTests.swift index 4049d554..885b1e0e 100644 --- a/Tests/SharingGRDBTests/CloudKitTests/AccountLifecycleTests.swift +++ b/Tests/SharingGRDBTests/CloudKitTests/AccountLifecycleTests.swift @@ -9,7 +9,7 @@ import Testing extension BaseCloudKitTests { @MainActor - final class AccountLifecycleTests: BaseCloudKitTests, Sendable { + final class AccountLifecycleTests: BaseCloudKitTests, @unchecked Sendable { @Test func signOutClearsUserDatabaseAndMetadatabase() async throws { try await userDatabase.userWrite { db in try db.seed { diff --git a/Tests/SharingGRDBTests/CloudKitTests/ReferenceViolationTests.swift b/Tests/SharingGRDBTests/CloudKitTests/ReferenceViolationTests.swift index de362b14..ed31188e 100644 --- a/Tests/SharingGRDBTests/CloudKitTests/ReferenceViolationTests.swift +++ b/Tests/SharingGRDBTests/CloudKitTests/ReferenceViolationTests.swift @@ -180,7 +180,7 @@ extension BaseCloudKitTests { try RemindersList.find(1).delete().execute(db) } } - let modifications = try await withDependencies { + let modifications = try withDependencies { $0.date.now.addTimeInterval(2) } operation: { let reminderRecord = CKRecord( From bc0fd2ff432c486db3e9d19899c3774ec69bc8ec Mon Sep 17 00:00:00 2001 From: Brandon Williams Date: Tue, 12 Aug 2025 11:32:30 -0500 Subject: [PATCH 4/5] fix typo --- .../CloudKit/SyncMetadata+MacroExpansion.swift | 4 ++-- Sources/SharingGRDBCore/CloudKit/SyncMetadata.swift | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Sources/SharingGRDBCore/CloudKit/SyncMetadata+MacroExpansion.swift b/Sources/SharingGRDBCore/CloudKit/SyncMetadata+MacroExpansion.swift index 5b469970..3621ee08 100644 --- a/Sources/SharingGRDBCore/CloudKit/SyncMetadata+MacroExpansion.swift +++ b/Sources/SharingGRDBCore/CloudKit/SyncMetadata+MacroExpansion.swift @@ -37,7 +37,7 @@ QueryValue, CKRecord?.SystemFieldsRepresentation >("lastKnownServerRecord", keyPath: \QueryValue.lastKnownServerRecord) public let _lastKnownServerRecordAllFields = StructuredQueriesCore.TableColumn< - QueryValue, CKRecord?.SystemFieldsRepresentation + QueryValue, CKRecord?.AllFieldsRepresentation >("_lastKnownServerRecordAllFields", keyPath: \QueryValue._lastKnownServerRecordAllFields) public let share = StructuredQueriesCore.TableColumn< QueryValue, CKShare?.SystemFieldsRepresentation @@ -94,7 +94,7 @@ self.parentRecordName = try decoder.decode(String.self) let lastKnownServerRecord = try decoder.decode(CKRecord?.SystemFieldsRepresentation.self) let _lastKnownServerRecordAllFields = try decoder.decode( - CKRecord?.SystemFieldsRepresentation.self + CKRecord?.AllFieldsRepresentation.self ) let share = try decoder.decode(CKShare?.SystemFieldsRepresentation.self) let isShared = try decoder.decode(Bool.self) diff --git a/Sources/SharingGRDBCore/CloudKit/SyncMetadata.swift b/Sources/SharingGRDBCore/CloudKit/SyncMetadata.swift index 8e6b50a8..f78db1fd 100644 --- a/Sources/SharingGRDBCore/CloudKit/SyncMetadata.swift +++ b/Sources/SharingGRDBCore/CloudKit/SyncMetadata.swift @@ -53,7 +53,7 @@ public var lastKnownServerRecord: CKRecord? /// The last known `CKRecord` received from the server with all fields archived. - // @Column(as: CKRecord?.SystemFieldsRepresentation.self) + // @Column(as: CKRecord?.AllFieldsRepresentation.self) package var _lastKnownServerRecordAllFields: CKRecord? /// The `CKShare` associated with this record, if it is shared. From 14d7ec523a386384665dda73a48a1ed76f4e6efa Mon Sep 17 00:00:00 2001 From: Brandon Williams Date: Tue, 12 Aug 2025 11:45:58 -0500 Subject: [PATCH 5/5] wip --- Sources/SharingGRDBCore/CloudKit/SyncMetadata.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sources/SharingGRDBCore/CloudKit/SyncMetadata.swift b/Sources/SharingGRDBCore/CloudKit/SyncMetadata.swift index f78db1fd..85676907 100644 --- a/Sources/SharingGRDBCore/CloudKit/SyncMetadata.swift +++ b/Sources/SharingGRDBCore/CloudKit/SyncMetadata.swift @@ -68,7 +68,7 @@ } @available(iOS 17, macOS 14, tvOS 17, watchOS 10, *) - // @Selection @Table + // @Table @Selection struct AncestorMetadata { let recordName: String let parentRecordName: String?