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

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 3 additions & 3 deletions Package.resolved

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Package.swift
Original file line number Diff line number Diff line change
Expand Up @@ -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: [
Expand Down
32 changes: 21 additions & 11 deletions Sources/SharingGRDBCore/CloudKit/RecordType+MacroExpansion.swift
Original file line number Diff line number Diff line change
Expand Up @@ -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<QueryValue, String>(
Expand Down Expand Up @@ -36,7 +36,7 @@
package let tableName: String?
package let schema: String
package let tableInfo: Set<TableInfo>
public struct TableColumns: StructuredQueriesCore.TableDefinition {
public nonisolated struct TableColumns: StructuredQueriesCore.TableDefinition {
public typealias QueryValue = Draft
public let tableName = StructuredQueriesCore.TableColumn<QueryValue, String?>(
"tableName",
Expand All @@ -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<TableInfo>.JSONRepresentation.self)
Expand All @@ -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
Expand All @@ -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<TableInfo>.JSONRepresentation.self)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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<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<QueryValue, CKDatabase.Scope.RawValueRepresentation> {
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<QueryValue, CKDatabase.Scope.RawValueRepresentation>
{
self.scope
}
public static var allColumns: [any StructuredQueriesCore.TableColumnExpression] {
Expand All @@ -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<QueryValue, CKDatabase.Scope.RawValueRepresentation?>("scope", keyPath: \QueryValue.scope)
public let data = StructuredQueriesCore.TableColumn<QueryValue, CKSyncEngine.State.Serialization.JSONRepresentation>("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 {
Expand All @@ -53,7 +70,7 @@
self.data = data
}

public init(_ other: StateSerialization) {
public nonisolated init(_ other: StateSerialization) {
self.scope = other.scope
self.data = other.data
}
Expand All @@ -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 {
Expand Down
51 changes: 33 additions & 18 deletions Sources/SharingGRDBCore/CloudKit/SyncMetadata+MacroExpansion.swift
Original file line number Diff line number Diff line change
Expand Up @@ -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<QueryValue, String>(
"recordPrimaryKey",
Expand Down Expand Up @@ -36,7 +36,7 @@
public let lastKnownServerRecord = StructuredQueriesCore.TableColumn<
QueryValue, CKRecord?.SystemFieldsRepresentation
>("lastKnownServerRecord", keyPath: \QueryValue.lastKnownServerRecord)
package let _lastKnownServerRecordAllFields = StructuredQueriesCore.TableColumn<
public let _lastKnownServerRecordAllFields = StructuredQueriesCore.TableColumn<
QueryValue, CKRecord?.AllFieldsRepresentation
>("_lastKnownServerRecordAllFields", keyPath: \QueryValue._lastKnownServerRecordAllFields)
public let share = StructuredQueriesCore.TableColumn<
Expand All @@ -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,
]
}
Expand All @@ -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,
]
}
Expand All @@ -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)
Expand Down Expand Up @@ -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<String>,
Expand All @@ -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<QueryValue, String>(
"recordName",
keyPath: \QueryValue.recordName
Expand Down Expand Up @@ -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
Expand All @@ -196,6 +210,7 @@
throw QueryDecodingError.missingRequiredColumn
}
self.recordName = recordName
self.parentRecordName = parentRecordName
self.lastKnownServerRecord = lastKnownServerRecord
}
}
Expand Down
21 changes: 13 additions & 8 deletions Sources/SharingGRDBCore/CloudKit/SyncMetadata.swift
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand All @@ -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, *)
// @Table @Selection
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,
Expand Down Expand Up @@ -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, *)
Expand Down
Loading
Loading