From 6c1a5a1db08d8ed7474e95f171cd11a80bb25792 Mon Sep 17 00:00:00 2001 From: Brandon Williams Date: Fri, 23 Jan 2026 10:19:21 -0600 Subject: [PATCH 1/4] Expected failure for permission error deleting root shared record. --- .../SharingPermissionsTests.swift | 69 +++++++++++++++++++ 1 file changed, 69 insertions(+) diff --git a/Tests/SQLiteDataTests/CloudKitTests/SharingPermissionsTests.swift b/Tests/SQLiteDataTests/CloudKitTests/SharingPermissionsTests.swift index c91a178b..a7ec68c5 100644 --- a/Tests/SQLiteDataTests/CloudKitTests/SharingPermissionsTests.swift +++ b/Tests/SQLiteDataTests/CloudKitTests/SharingPermissionsTests.swift @@ -192,6 +192,75 @@ } } + /// Delete root shared record when user does not have permission. + @available(iOS 17, macOS 14, tvOS 17, watchOS 10, *) + @Test func deleteRootSharedRecord() async throws { + let externalZone = CKRecordZone( + zoneID: CKRecordZone.ID( + zoneName: "external.zone", + ownerName: "external.owner" + ) + ) + try await syncEngine.modifyRecordZones(scope: .shared, saving: [externalZone]).notify() + + let remindersListRecord = CKRecord( + recordType: RemindersList.tableName, + recordID: RemindersList.recordID(for: 1, zoneID: externalZone.zoneID) + ) + remindersListRecord.setValue(1, forKey: "id", at: now) + remindersListRecord.setValue("Personal", forKey: "title", at: now) + let reminderRecord = CKRecord( + recordType: Reminder.tableName, + recordID: Reminder.recordID(for: 1, zoneID: externalZone.zoneID) + ) + reminderRecord.setValue(1, forKey: "id", at: now) + reminderRecord.setValue("Get milk", forKey: "title", at: now) + reminderRecord.setValue(1, forKey: "remindersListID", at: now) + reminderRecord.parent = CKRecord.Reference(record: remindersListRecord, action: .none) + let share = CKShare( + rootRecord: remindersListRecord, + shareID: CKRecord.ID( + recordName: "share-\(remindersListRecord.recordID.recordName)", + zoneID: remindersListRecord.recordID.zoneID + ) + ) + share.publicPermission = .readOnly + share.currentUserParticipant?.permission = .readOnly + + _ = try syncEngine.modifyRecords( + scope: .shared, + saving: [reminderRecord, remindersListRecord, share] + ) + + let freshRemindersListRecord = try syncEngine.shared.database.record( + for: remindersListRecord.recordID + ) + let freshShare = try #require( + syncEngine.shared.database.record(for: share.recordID) as? CKShare + ) + + try await syncEngine + .acceptShare( + metadata: ShareMetadata( + containerIdentifier: container.containerIdentifier!, + hierarchicalRootRecordID: freshRemindersListRecord.recordID, + rootRecord: freshRemindersListRecord, + share: freshShare + ) + ) + + await withKnownIssue( + """ + It should be allowed to delete the root record even with read-only permissions + """ + ) { + try await self.userDatabase.userWrite { db in + try RemindersList.find(1).delete().execute(db) + try #expect(RemindersList.fetchCount(db) == 0) + } + } + } + /// Editing record in shared record when user does not have permission. @available(iOS 17, macOS 14, tvOS 17, watchOS 10, *) @Test func editReminderInReadOnlyRemindersList() async throws { From 6744fb7f855cb5a9c7e188938a604e9f833b66ce Mon Sep 17 00:00:00 2001 From: Brandon Williams Date: Fri, 23 Jan 2026 14:34:56 -0600 Subject: [PATCH 2/4] codex shit --- .../CloudKit/Internal/Triggers.swift | 28 +++- Sources/SQLiteData/CloudKit/SyncEngine.swift | 8 ++ .../SharingPermissionsTests.swift | 129 ++++++++++++++++-- 3 files changed, 153 insertions(+), 12 deletions(-) diff --git a/Sources/SQLiteData/CloudKit/Internal/Triggers.swift b/Sources/SQLiteData/CloudKit/Internal/Triggers.swift index 5085b05a..9f940a4a 100644 --- a/Sources/SQLiteData/CloudKit/Internal/Triggers.swift +++ b/Sources/SQLiteData/CloudKit/Internal/Triggers.swift @@ -132,7 +132,8 @@ alias: old, parentForeignKey: parentForeignKey, defaultZone: defaultZone, - privateTables: privateTables + privateTables: privateTables, + skipPermissionChecksIfDeletingRootRecord: true ) SyncMetadata .where { @@ -420,8 +421,10 @@ alias: StructuredQueriesCore.TableAlias.TableColumns, parentForeignKey: ForeignKey?, defaultZone: CKRecordZone, - privateTables: [any SynchronizableTable] + privateTables: [any SynchronizableTable], + skipPermissionChecksIfDeletingRootRecord: Bool = false ) -> some StructuredQueriesCore.Statement { + let isRootTable = parentForeignKey == nil let (parentRecordPrimaryKey, parentRecordType, _, _) = parentFields( alias: alias, parentForeignKey: parentForeignKey, @@ -435,12 +438,22 @@ $0.recordPrimaryKey.is(parentRecordPrimaryKey) && $0.recordType.is(parentRecordType) } - .select { RootShare.Columns(parentRecordName: $0.parentRecordName, share: $0.share) } + .select { + RootShare.Columns( + recordName: $0.recordName, + parentRecordName: $0.parentRecordName, + share: $0.share + ) + } .union( all: true, SyncMetadata .select { - RootShare.Columns(parentRecordName: $0.parentRecordName, share: $0.share) + RootShare.Columns( + recordName: $0.recordName, + parentRecordName: $0.parentRecordName, + share: $0.share + ) } .join(RootShare.all) { $0.recordName.is($1.parentRecordName) } ) @@ -456,10 +469,16 @@ !SyncEngine.$isSynchronizing && $0.parentRecordName.is(nil) && !$hasPermission($0.share) + && ((isRootTable && triggerDepth().gt(1)) || (!isRootTable && triggerDepth().eq(1))) } } } + @available(iOS 17, macOS 14, tvOS 17, watchOS 10, *) + private func triggerDepth() -> some QueryExpression { + #sql("sqlite_trigger_depth()", as: Int.self) + } + @available(iOS 17, macOS 14, tvOS 17, watchOS 10, *) private func descendantRecordNames( recordName: some QueryExpression, @@ -575,6 +594,7 @@ @available(iOS 17, macOS 14, tvOS 17, watchOS 10, *) @Selection private struct RootShare { + let recordName: String let parentRecordName: String? @Column(as: CKShare?.SystemFieldsRepresentation.self) let share: CKShare? diff --git a/Sources/SQLiteData/CloudKit/SyncEngine.swift b/Sources/SQLiteData/CloudKit/SyncEngine.swift index 878e832f..f28ffa14 100644 --- a/Sources/SQLiteData/CloudKit/SyncEngine.swift +++ b/Sources/SQLiteData/CloudKit/SyncEngine.swift @@ -358,6 +358,14 @@ db.add(function: $hasPermission) db.add(function: $currentZoneName) db.add(function: $currentOwnerName) + try #sql( + """ + CREATE TEMP TABLE IF NOT EXISTS "\(raw: String.sqliteDataCloudKitSchemaName)_deletingRootRecords" ( + "recordName" TEXT PRIMARY KEY + ) + """ + ) + .execute(db) for trigger in SyncMetadata.callbackTriggers(for: self) { try trigger.execute(db) diff --git a/Tests/SQLiteDataTests/CloudKitTests/SharingPermissionsTests.swift b/Tests/SQLiteDataTests/CloudKitTests/SharingPermissionsTests.swift index a7ec68c5..c30da6ea 100644 --- a/Tests/SQLiteDataTests/CloudKitTests/SharingPermissionsTests.swift +++ b/Tests/SQLiteDataTests/CloudKitTests/SharingPermissionsTests.swift @@ -192,9 +192,89 @@ } } - /// Delete root shared record when user does not have permission. + /// Delete root shared record (no child records) when user does not have permission. @available(iOS 17, macOS 14, tvOS 17, watchOS 10, *) - @Test func deleteRootSharedRecord() async throws { + @Test func deleteRootSharedRecordNoChildRecords() async throws { + let externalZone = CKRecordZone( + zoneID: CKRecordZone.ID( + zoneName: "external.zone", + ownerName: "external.owner" + ) + ) + try await syncEngine.modifyRecordZones(scope: .shared, saving: [externalZone]).notify() + + let remindersListRecord = CKRecord( + recordType: RemindersList.tableName, + recordID: RemindersList.recordID(for: 1, zoneID: externalZone.zoneID) + ) + remindersListRecord.setValue(1, forKey: "id", at: now) + remindersListRecord.setValue("Personal", forKey: "title", at: now) + let share = CKShare( + rootRecord: remindersListRecord, + shareID: CKRecord.ID( + recordName: "share-\(remindersListRecord.recordID.recordName)", + zoneID: remindersListRecord.recordID.zoneID + ) + ) + + share.publicPermission = .readOnly + share.currentUserParticipant?.permission = .readOnly + + _ = try syncEngine.modifyRecords( + scope: .shared, + saving: [remindersListRecord, share] + ) + + let freshRemindersListRecord = try syncEngine.shared.database.record( + for: remindersListRecord.recordID + ) + let freshShare = try #require( + syncEngine.shared.database.record(for: share.recordID) as? CKShare + ) + + try await syncEngine + .acceptShare( + metadata: ShareMetadata( + containerIdentifier: container.containerIdentifier!, + hierarchicalRootRecordID: freshRemindersListRecord.recordID, + rootRecord: freshRemindersListRecord, + share: freshShare + ) + ) + + try await self.userDatabase.userWrite { db in + try RemindersList.find(1).delete().execute(db) + try #expect(RemindersList.fetchCount(db) == 0) + } + try await syncEngine.processPendingRecordZoneChanges(scope: .shared) + assertInlineSnapshot(of: syncEngine.container, as: .customDump) { + """ + MockCloudContainer( + privateCloudDatabase: MockCloudDatabase( + databaseScope: .private, + storage: [] + ), + sharedCloudDatabase: MockCloudDatabase( + databaseScope: .shared, + storage: [ + [0]: CKRecord( + recordID: CKRecord.ID(1:remindersLists/external.zone/external.owner), + recordType: "remindersLists", + parent: nil, + share: CKReference(recordID: CKRecord.ID(share-1:remindersLists/external.zone/external.owner)), + id: 1, + title: "Personal" + ) + ] + ) + ) + """ + } + } + + /// Delete root shared record (with child records) when user does not have permission. + @available(iOS 17, macOS 14, tvOS 17, watchOS 10, *) + @Test func deleteRootSharedRecordWithChildRecords() async throws { let externalZone = CKRecordZone( zoneID: CKRecordZone.ID( zoneName: "external.zone", @@ -249,16 +329,49 @@ ) ) - await withKnownIssue( - """ - It should be allowed to delete the root record even with read-only permissions - """ - ) { +// await withKnownIssue( +// """ +// It should be allowed to delete the root record even with read-only permissions +// """ +// ) { try await self.userDatabase.userWrite { db in try RemindersList.find(1).delete().execute(db) try #expect(RemindersList.fetchCount(db) == 0) } - } + try await syncEngine.processPendingRecordZoneChanges(scope: .shared) + assertInlineSnapshot(of: syncEngine.container, as: .customDump) { + """ + MockCloudContainer( + privateCloudDatabase: MockCloudDatabase( + databaseScope: .private, + storage: [] + ), + sharedCloudDatabase: MockCloudDatabase( + databaseScope: .shared, + storage: [ + [0]: CKRecord( + recordID: CKRecord.ID(1:reminders/external.zone/external.owner), + recordType: "reminders", + parent: CKReference(recordID: CKRecord.ID(1:remindersLists/external.zone/external.owner)), + share: nil, + id: 1, + remindersListID: 1, + title: "Get milk" + ), + [1]: CKRecord( + recordID: CKRecord.ID(1:remindersLists/external.zone/external.owner), + recordType: "remindersLists", + parent: nil, + share: CKReference(recordID: CKRecord.ID(share-1:remindersLists/external.zone/external.owner)), + id: 1, + title: "Personal" + ) + ] + ) + ) + """ + } +// } } /// Editing record in shared record when user does not have permission. From 2cdbbac5d3e2373e905ad5e64e9eee6e72e4b408 Mon Sep 17 00:00:00 2001 From: Brandon Williams Date: Tue, 27 Jan 2026 16:11:06 -0600 Subject: [PATCH 3/4] Revert "codex shit" This reverts commit 6744fb7f855cb5a9c7e188938a604e9f833b66ce. --- .../CloudKit/Internal/Triggers.swift | 28 +--- Sources/SQLiteData/CloudKit/SyncEngine.swift | 8 -- .../SharingPermissionsTests.swift | 129 ++---------------- 3 files changed, 12 insertions(+), 153 deletions(-) diff --git a/Sources/SQLiteData/CloudKit/Internal/Triggers.swift b/Sources/SQLiteData/CloudKit/Internal/Triggers.swift index 9f940a4a..5085b05a 100644 --- a/Sources/SQLiteData/CloudKit/Internal/Triggers.swift +++ b/Sources/SQLiteData/CloudKit/Internal/Triggers.swift @@ -132,8 +132,7 @@ alias: old, parentForeignKey: parentForeignKey, defaultZone: defaultZone, - privateTables: privateTables, - skipPermissionChecksIfDeletingRootRecord: true + privateTables: privateTables ) SyncMetadata .where { @@ -421,10 +420,8 @@ alias: StructuredQueriesCore.TableAlias.TableColumns, parentForeignKey: ForeignKey?, defaultZone: CKRecordZone, - privateTables: [any SynchronizableTable], - skipPermissionChecksIfDeletingRootRecord: Bool = false + privateTables: [any SynchronizableTable] ) -> some StructuredQueriesCore.Statement { - let isRootTable = parentForeignKey == nil let (parentRecordPrimaryKey, parentRecordType, _, _) = parentFields( alias: alias, parentForeignKey: parentForeignKey, @@ -438,22 +435,12 @@ $0.recordPrimaryKey.is(parentRecordPrimaryKey) && $0.recordType.is(parentRecordType) } - .select { - RootShare.Columns( - recordName: $0.recordName, - parentRecordName: $0.parentRecordName, - share: $0.share - ) - } + .select { RootShare.Columns(parentRecordName: $0.parentRecordName, share: $0.share) } .union( all: true, SyncMetadata .select { - RootShare.Columns( - recordName: $0.recordName, - parentRecordName: $0.parentRecordName, - share: $0.share - ) + RootShare.Columns(parentRecordName: $0.parentRecordName, share: $0.share) } .join(RootShare.all) { $0.recordName.is($1.parentRecordName) } ) @@ -469,16 +456,10 @@ !SyncEngine.$isSynchronizing && $0.parentRecordName.is(nil) && !$hasPermission($0.share) - && ((isRootTable && triggerDepth().gt(1)) || (!isRootTable && triggerDepth().eq(1))) } } } - @available(iOS 17, macOS 14, tvOS 17, watchOS 10, *) - private func triggerDepth() -> some QueryExpression { - #sql("sqlite_trigger_depth()", as: Int.self) - } - @available(iOS 17, macOS 14, tvOS 17, watchOS 10, *) private func descendantRecordNames( recordName: some QueryExpression, @@ -594,7 +575,6 @@ @available(iOS 17, macOS 14, tvOS 17, watchOS 10, *) @Selection private struct RootShare { - let recordName: String let parentRecordName: String? @Column(as: CKShare?.SystemFieldsRepresentation.self) let share: CKShare? diff --git a/Sources/SQLiteData/CloudKit/SyncEngine.swift b/Sources/SQLiteData/CloudKit/SyncEngine.swift index f28ffa14..878e832f 100644 --- a/Sources/SQLiteData/CloudKit/SyncEngine.swift +++ b/Sources/SQLiteData/CloudKit/SyncEngine.swift @@ -358,14 +358,6 @@ db.add(function: $hasPermission) db.add(function: $currentZoneName) db.add(function: $currentOwnerName) - try #sql( - """ - CREATE TEMP TABLE IF NOT EXISTS "\(raw: String.sqliteDataCloudKitSchemaName)_deletingRootRecords" ( - "recordName" TEXT PRIMARY KEY - ) - """ - ) - .execute(db) for trigger in SyncMetadata.callbackTriggers(for: self) { try trigger.execute(db) diff --git a/Tests/SQLiteDataTests/CloudKitTests/SharingPermissionsTests.swift b/Tests/SQLiteDataTests/CloudKitTests/SharingPermissionsTests.swift index c30da6ea..a7ec68c5 100644 --- a/Tests/SQLiteDataTests/CloudKitTests/SharingPermissionsTests.swift +++ b/Tests/SQLiteDataTests/CloudKitTests/SharingPermissionsTests.swift @@ -192,89 +192,9 @@ } } - /// Delete root shared record (no child records) when user does not have permission. + /// Delete root shared record when user does not have permission. @available(iOS 17, macOS 14, tvOS 17, watchOS 10, *) - @Test func deleteRootSharedRecordNoChildRecords() async throws { - let externalZone = CKRecordZone( - zoneID: CKRecordZone.ID( - zoneName: "external.zone", - ownerName: "external.owner" - ) - ) - try await syncEngine.modifyRecordZones(scope: .shared, saving: [externalZone]).notify() - - let remindersListRecord = CKRecord( - recordType: RemindersList.tableName, - recordID: RemindersList.recordID(for: 1, zoneID: externalZone.zoneID) - ) - remindersListRecord.setValue(1, forKey: "id", at: now) - remindersListRecord.setValue("Personal", forKey: "title", at: now) - let share = CKShare( - rootRecord: remindersListRecord, - shareID: CKRecord.ID( - recordName: "share-\(remindersListRecord.recordID.recordName)", - zoneID: remindersListRecord.recordID.zoneID - ) - ) - - share.publicPermission = .readOnly - share.currentUserParticipant?.permission = .readOnly - - _ = try syncEngine.modifyRecords( - scope: .shared, - saving: [remindersListRecord, share] - ) - - let freshRemindersListRecord = try syncEngine.shared.database.record( - for: remindersListRecord.recordID - ) - let freshShare = try #require( - syncEngine.shared.database.record(for: share.recordID) as? CKShare - ) - - try await syncEngine - .acceptShare( - metadata: ShareMetadata( - containerIdentifier: container.containerIdentifier!, - hierarchicalRootRecordID: freshRemindersListRecord.recordID, - rootRecord: freshRemindersListRecord, - share: freshShare - ) - ) - - try await self.userDatabase.userWrite { db in - try RemindersList.find(1).delete().execute(db) - try #expect(RemindersList.fetchCount(db) == 0) - } - try await syncEngine.processPendingRecordZoneChanges(scope: .shared) - assertInlineSnapshot(of: syncEngine.container, as: .customDump) { - """ - MockCloudContainer( - privateCloudDatabase: MockCloudDatabase( - databaseScope: .private, - storage: [] - ), - sharedCloudDatabase: MockCloudDatabase( - databaseScope: .shared, - storage: [ - [0]: CKRecord( - recordID: CKRecord.ID(1:remindersLists/external.zone/external.owner), - recordType: "remindersLists", - parent: nil, - share: CKReference(recordID: CKRecord.ID(share-1:remindersLists/external.zone/external.owner)), - id: 1, - title: "Personal" - ) - ] - ) - ) - """ - } - } - - /// Delete root shared record (with child records) when user does not have permission. - @available(iOS 17, macOS 14, tvOS 17, watchOS 10, *) - @Test func deleteRootSharedRecordWithChildRecords() async throws { + @Test func deleteRootSharedRecord() async throws { let externalZone = CKRecordZone( zoneID: CKRecordZone.ID( zoneName: "external.zone", @@ -329,49 +249,16 @@ ) ) -// await withKnownIssue( -// """ -// It should be allowed to delete the root record even with read-only permissions -// """ -// ) { + await withKnownIssue( + """ + It should be allowed to delete the root record even with read-only permissions + """ + ) { try await self.userDatabase.userWrite { db in try RemindersList.find(1).delete().execute(db) try #expect(RemindersList.fetchCount(db) == 0) } - try await syncEngine.processPendingRecordZoneChanges(scope: .shared) - assertInlineSnapshot(of: syncEngine.container, as: .customDump) { - """ - MockCloudContainer( - privateCloudDatabase: MockCloudDatabase( - databaseScope: .private, - storage: [] - ), - sharedCloudDatabase: MockCloudDatabase( - databaseScope: .shared, - storage: [ - [0]: CKRecord( - recordID: CKRecord.ID(1:reminders/external.zone/external.owner), - recordType: "reminders", - parent: CKReference(recordID: CKRecord.ID(1:remindersLists/external.zone/external.owner)), - share: nil, - id: 1, - remindersListID: 1, - title: "Get milk" - ), - [1]: CKRecord( - recordID: CKRecord.ID(1:remindersLists/external.zone/external.owner), - recordType: "remindersLists", - parent: nil, - share: CKReference(recordID: CKRecord.ID(share-1:remindersLists/external.zone/external.owner)), - id: 1, - title: "Personal" - ) - ] - ) - ) - """ - } -// } + } } /// Editing record in shared record when user does not have permission. From bcc4c9f35fd36c121d5416b72df52427aa7cd562 Mon Sep 17 00:00:00 2001 From: Brandon Williams Date: Tue, 27 Jan 2026 16:22:31 -0600 Subject: [PATCH 4/4] fix permission problem --- .../CloudKit/Internal/Triggers.swift | 51 ++- .../SharingPermissionsTests.swift | 42 +- .../CloudKitTests/TriggerTests.swift | 433 ++++++++++-------- 3 files changed, 331 insertions(+), 195 deletions(-) diff --git a/Sources/SQLiteData/CloudKit/Internal/Triggers.swift b/Sources/SQLiteData/CloudKit/Internal/Triggers.swift index 5085b05a..5c551834 100644 --- a/Sources/SQLiteData/CloudKit/Internal/Triggers.swift +++ b/Sources/SQLiteData/CloudKit/Internal/Triggers.swift @@ -20,6 +20,11 @@ defaultZone: defaultZone, privateTables: privateTables ), + beforeDeleteFromUser( + parentForeignKey: parentForeignKey, + defaultZone: defaultZone, + privateTables: privateTables + ), afterDeleteFromUser( parentForeignKey: parentForeignKey, defaultZone: defaultZone, @@ -117,6 +122,29 @@ ) } + fileprivate static func beforeDeleteFromUser( + parentForeignKey: ForeignKey?, + defaultZone: CKRecordZone, + privateTables: [any SynchronizableTable] + ) -> TemporaryTrigger< + Self + > { + createTemporaryTrigger( + "\(String.sqliteDataCloudKitSchemaName)_before_delete_on_\(tableName)_from_user", + ifNotExists: true, + before: .delete { old in + SyncMetadata + .where { + $0.recordPrimaryKey.eq(#sql("\(old.primaryKey)")) + && $0.recordType.eq(tableName) + } + .update { $0._isDeleted = true } + } when: { _ in + !SyncEngine.$isSynchronizing + } + ) + } + fileprivate static func afterDeleteFromUser( parentForeignKey: ForeignKey?, defaultZone: CKRecordZone, @@ -134,12 +162,6 @@ defaultZone: defaultZone, privateTables: privateTables ) - SyncMetadata - .where { - $0.recordPrimaryKey.eq(#sql("\(old.primaryKey)")) - && $0.recordType.eq(tableName) - } - .update { $0._isDeleted = true } } when: { _ in !SyncEngine.$isSynchronizing } @@ -435,12 +457,23 @@ $0.recordPrimaryKey.is(parentRecordPrimaryKey) && $0.recordType.is(parentRecordType) } - .select { RootShare.Columns(parentRecordName: $0.parentRecordName, share: $0.share) } + .select { + RootShare + .Columns( + parentRecordName: $0.parentRecordName, + share: $0.share, + _isDeleted: $0._isDeleted + ) + } .union( all: true, SyncMetadata .select { - RootShare.Columns(parentRecordName: $0.parentRecordName, share: $0.share) + RootShare.Columns( + parentRecordName: $0.parentRecordName, + share: $0.share, + _isDeleted: $0._isDeleted + ) } .join(RootShare.all) { $0.recordName.is($1.parentRecordName) } ) @@ -455,6 +488,7 @@ .where { !SyncEngine.$isSynchronizing && $0.parentRecordName.is(nil) + && !$0._isDeleted && !$hasPermission($0.share) } } @@ -578,5 +612,6 @@ let parentRecordName: String? @Column(as: CKShare?.SystemFieldsRepresentation.self) let share: CKShare? + let _isDeleted: Bool } #endif diff --git a/Tests/SQLiteDataTests/CloudKitTests/SharingPermissionsTests.swift b/Tests/SQLiteDataTests/CloudKitTests/SharingPermissionsTests.swift index a7ec68c5..cf452448 100644 --- a/Tests/SQLiteDataTests/CloudKitTests/SharingPermissionsTests.swift +++ b/Tests/SQLiteDataTests/CloudKitTests/SharingPermissionsTests.swift @@ -249,15 +249,43 @@ ) ) - await withKnownIssue( + try await self.userDatabase.userWrite { db in + try RemindersList.find(1).delete().execute(db) + try #expect(RemindersList.fetchCount(db) == 0) + try #expect(Reminder.fetchCount(db) == 0) + } + try await syncEngine.processPendingRecordZoneChanges(scope: .shared) + assertInlineSnapshot(of: syncEngine.container, as: .customDump) { """ - It should be allowed to delete the root record even with read-only permissions + MockCloudContainer( + privateCloudDatabase: MockCloudDatabase( + databaseScope: .private, + storage: [] + ), + sharedCloudDatabase: MockCloudDatabase( + databaseScope: .shared, + storage: [ + [0]: CKRecord( + recordID: CKRecord.ID(1:reminders/external.zone/external.owner), + recordType: "reminders", + parent: CKReference(recordID: CKRecord.ID(1:remindersLists/external.zone/external.owner)), + share: nil, + id: 1, + remindersListID: 1, + title: "Get milk" + ), + [1]: CKRecord( + recordID: CKRecord.ID(1:remindersLists/external.zone/external.owner), + recordType: "remindersLists", + parent: nil, + share: CKReference(recordID: CKRecord.ID(share-1:remindersLists/external.zone/external.owner)), + id: 1, + title: "Personal" + ) + ] + ) + ) """ - ) { - try await self.userDatabase.userWrite { db in - try RemindersList.find(1).delete().execute(db) - try #expect(RemindersList.fetchCount(db) == 0) - } } } diff --git a/Tests/SQLiteDataTests/CloudKitTests/TriggerTests.swift b/Tests/SQLiteDataTests/CloudKitTests/TriggerTests.swift index bc4c1ec2..b5f2725c 100644 --- a/Tests/SQLiteDataTests/CloudKitTests/TriggerTests.swift +++ b/Tests/SQLiteDataTests/CloudKitTests/TriggerTests.swift @@ -8,6 +8,7 @@ extension BaseCloudKitTests { @MainActor + @Suite final class TriggerTests: BaseCloudKitTests, @unchecked Sendable { @available(iOS 17, macOS 14, tvOS 17, watchOS 10, *) @Test func triggers() async throws { @@ -31,20 +32,17 @@ AFTER DELETE ON "childWithOnDeleteSetDefaults" FOR EACH ROW WHEN NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"()) BEGIN WITH "rootShares" AS ( - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") IS ("old"."parentID")) AND (("sqlitedata_icloud_metadata"."recordType") IS ('parents')) UNION ALL - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" JOIN "rootShares" ON ("sqlitedata_icloud_metadata"."recordName") IS ("rootShares"."parentRecordName") ) SELECT RAISE(ABORT, 'co.pointfree.SQLiteData.CloudKit.write-permission-error') FROM "rootShares" - WHERE ((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); - UPDATE "sqlitedata_icloud_metadata" - SET "_isDeleted" = 1 - WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") = ("old"."id")) AND (("sqlitedata_icloud_metadata"."recordType") = ('childWithOnDeleteSetDefaults')); + WHERE (((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("rootShares"."_isDeleted"))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); END """, [2]: """ @@ -60,20 +58,17 @@ AFTER DELETE ON "childWithOnDeleteSetNulls" FOR EACH ROW WHEN NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"()) BEGIN WITH "rootShares" AS ( - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") IS ("old"."parentID")) AND (("sqlitedata_icloud_metadata"."recordType") IS ('parents')) UNION ALL - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" JOIN "rootShares" ON ("sqlitedata_icloud_metadata"."recordName") IS ("rootShares"."parentRecordName") ) SELECT RAISE(ABORT, 'co.pointfree.SQLiteData.CloudKit.write-permission-error') FROM "rootShares" - WHERE ((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); - UPDATE "sqlitedata_icloud_metadata" - SET "_isDeleted" = 1 - WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") = ("old"."id")) AND (("sqlitedata_icloud_metadata"."recordType") = ('childWithOnDeleteSetNulls')); + WHERE (((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("rootShares"."_isDeleted"))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); END """, [4]: """ @@ -89,20 +84,17 @@ AFTER DELETE ON "modelAs" FOR EACH ROW WHEN NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"()) BEGIN WITH "rootShares" AS ( - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") IS (NULL)) AND (("sqlitedata_icloud_metadata"."recordType") IS (NULL)) UNION ALL - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" JOIN "rootShares" ON ("sqlitedata_icloud_metadata"."recordName") IS ("rootShares"."parentRecordName") ) SELECT RAISE(ABORT, 'co.pointfree.SQLiteData.CloudKit.write-permission-error') FROM "rootShares" - WHERE ((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); - UPDATE "sqlitedata_icloud_metadata" - SET "_isDeleted" = 1 - WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") = ("old"."id")) AND (("sqlitedata_icloud_metadata"."recordType") = ('modelAs')); + WHERE (((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("rootShares"."_isDeleted"))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); END """, [6]: """ @@ -118,20 +110,17 @@ AFTER DELETE ON "modelBs" FOR EACH ROW WHEN NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"()) BEGIN WITH "rootShares" AS ( - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") IS ("old"."modelAID")) AND (("sqlitedata_icloud_metadata"."recordType") IS ('modelAs')) UNION ALL - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" JOIN "rootShares" ON ("sqlitedata_icloud_metadata"."recordName") IS ("rootShares"."parentRecordName") ) SELECT RAISE(ABORT, 'co.pointfree.SQLiteData.CloudKit.write-permission-error') FROM "rootShares" - WHERE ((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); - UPDATE "sqlitedata_icloud_metadata" - SET "_isDeleted" = 1 - WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") = ("old"."id")) AND (("sqlitedata_icloud_metadata"."recordType") = ('modelBs')); + WHERE (((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("rootShares"."_isDeleted"))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); END """, [8]: """ @@ -147,20 +136,17 @@ AFTER DELETE ON "modelCs" FOR EACH ROW WHEN NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"()) BEGIN WITH "rootShares" AS ( - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") IS ("old"."modelBID")) AND (("sqlitedata_icloud_metadata"."recordType") IS ('modelBs')) UNION ALL - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" JOIN "rootShares" ON ("sqlitedata_icloud_metadata"."recordName") IS ("rootShares"."parentRecordName") ) SELECT RAISE(ABORT, 'co.pointfree.SQLiteData.CloudKit.write-permission-error') FROM "rootShares" - WHERE ((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); - UPDATE "sqlitedata_icloud_metadata" - SET "_isDeleted" = 1 - WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") = ("old"."id")) AND (("sqlitedata_icloud_metadata"."recordType") = ('modelCs')); + WHERE (((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("rootShares"."_isDeleted"))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); END """, [10]: """ @@ -176,20 +162,17 @@ AFTER DELETE ON "parents" FOR EACH ROW WHEN NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"()) BEGIN WITH "rootShares" AS ( - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") IS (NULL)) AND (("sqlitedata_icloud_metadata"."recordType") IS (NULL)) UNION ALL - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" JOIN "rootShares" ON ("sqlitedata_icloud_metadata"."recordName") IS ("rootShares"."parentRecordName") ) SELECT RAISE(ABORT, 'co.pointfree.SQLiteData.CloudKit.write-permission-error') FROM "rootShares" - WHERE ((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); - UPDATE "sqlitedata_icloud_metadata" - SET "_isDeleted" = 1 - WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") = ("old"."id")) AND (("sqlitedata_icloud_metadata"."recordType") = ('parents')); + WHERE (((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("rootShares"."_isDeleted"))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); END """, [12]: """ @@ -205,20 +188,17 @@ AFTER DELETE ON "reminderTags" FOR EACH ROW WHEN NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"()) BEGIN WITH "rootShares" AS ( - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") IS (NULL)) AND (("sqlitedata_icloud_metadata"."recordType") IS (NULL)) UNION ALL - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" JOIN "rootShares" ON ("sqlitedata_icloud_metadata"."recordName") IS ("rootShares"."parentRecordName") ) SELECT RAISE(ABORT, 'co.pointfree.SQLiteData.CloudKit.write-permission-error') FROM "rootShares" - WHERE ((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); - UPDATE "sqlitedata_icloud_metadata" - SET "_isDeleted" = 1 - WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") = ("old"."id")) AND (("sqlitedata_icloud_metadata"."recordType") = ('reminderTags')); + WHERE (((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("rootShares"."_isDeleted"))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); END """, [14]: """ @@ -234,20 +214,17 @@ AFTER DELETE ON "remindersListAssets" FOR EACH ROW WHEN NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"()) BEGIN WITH "rootShares" AS ( - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") IS ("old"."remindersListID")) AND (("sqlitedata_icloud_metadata"."recordType") IS ('remindersLists')) UNION ALL - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" JOIN "rootShares" ON ("sqlitedata_icloud_metadata"."recordName") IS ("rootShares"."parentRecordName") ) SELECT RAISE(ABORT, 'co.pointfree.SQLiteData.CloudKit.write-permission-error') FROM "rootShares" - WHERE ((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); - UPDATE "sqlitedata_icloud_metadata" - SET "_isDeleted" = 1 - WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") = ("old"."remindersListID")) AND (("sqlitedata_icloud_metadata"."recordType") = ('remindersListAssets')); + WHERE (((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("rootShares"."_isDeleted"))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); END """, [16]: """ @@ -263,20 +240,17 @@ AFTER DELETE ON "remindersListPrivates" FOR EACH ROW WHEN NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"()) BEGIN WITH "rootShares" AS ( - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") IS ("old"."remindersListID")) AND (("sqlitedata_icloud_metadata"."recordType") IS ('remindersLists')) UNION ALL - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" JOIN "rootShares" ON ("sqlitedata_icloud_metadata"."recordName") IS ("rootShares"."parentRecordName") ) SELECT RAISE(ABORT, 'co.pointfree.SQLiteData.CloudKit.write-permission-error') FROM "rootShares" - WHERE ((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); - UPDATE "sqlitedata_icloud_metadata" - SET "_isDeleted" = 1 - WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") = ("old"."remindersListID")) AND (("sqlitedata_icloud_metadata"."recordType") = ('remindersListPrivates')); + WHERE (((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("rootShares"."_isDeleted"))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); END """, [18]: """ @@ -292,20 +266,17 @@ AFTER DELETE ON "remindersLists" FOR EACH ROW WHEN NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"()) BEGIN WITH "rootShares" AS ( - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") IS (NULL)) AND (("sqlitedata_icloud_metadata"."recordType") IS (NULL)) UNION ALL - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" JOIN "rootShares" ON ("sqlitedata_icloud_metadata"."recordName") IS ("rootShares"."parentRecordName") ) SELECT RAISE(ABORT, 'co.pointfree.SQLiteData.CloudKit.write-permission-error') FROM "rootShares" - WHERE ((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); - UPDATE "sqlitedata_icloud_metadata" - SET "_isDeleted" = 1 - WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") = ("old"."id")) AND (("sqlitedata_icloud_metadata"."recordType") = ('remindersLists')); + WHERE (((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("rootShares"."_isDeleted"))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); END """, [20]: """ @@ -321,20 +292,17 @@ AFTER DELETE ON "reminders" FOR EACH ROW WHEN NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"()) BEGIN WITH "rootShares" AS ( - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") IS ("old"."remindersListID")) AND (("sqlitedata_icloud_metadata"."recordType") IS ('remindersLists')) UNION ALL - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" JOIN "rootShares" ON ("sqlitedata_icloud_metadata"."recordName") IS ("rootShares"."parentRecordName") ) SELECT RAISE(ABORT, 'co.pointfree.SQLiteData.CloudKit.write-permission-error') FROM "rootShares" - WHERE ((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); - UPDATE "sqlitedata_icloud_metadata" - SET "_isDeleted" = 1 - WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") = ("old"."id")) AND (("sqlitedata_icloud_metadata"."recordType") = ('reminders')); + WHERE (((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("rootShares"."_isDeleted"))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); END """, [22]: """ @@ -370,20 +338,17 @@ AFTER DELETE ON "tags" FOR EACH ROW WHEN NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"()) BEGIN WITH "rootShares" AS ( - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") IS (NULL)) AND (("sqlitedata_icloud_metadata"."recordType") IS (NULL)) UNION ALL - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" JOIN "rootShares" ON ("sqlitedata_icloud_metadata"."recordName") IS ("rootShares"."parentRecordName") ) SELECT RAISE(ABORT, 'co.pointfree.SQLiteData.CloudKit.write-permission-error') FROM "rootShares" - WHERE ((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); - UPDATE "sqlitedata_icloud_metadata" - SET "_isDeleted" = 1 - WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") = ("old"."title")) AND (("sqlitedata_icloud_metadata"."recordType") = ('tags')); + WHERE (((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("rootShares"."_isDeleted"))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); END """, [25]: """ @@ -391,17 +356,17 @@ AFTER INSERT ON "childWithOnDeleteSetDefaults" FOR EACH ROW BEGIN WITH "rootShares" AS ( - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") IS ("new"."parentID")) AND (("sqlitedata_icloud_metadata"."recordType") IS ('parents')) UNION ALL - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" JOIN "rootShares" ON ("sqlitedata_icloud_metadata"."recordName") IS ("rootShares"."parentRecordName") ) SELECT RAISE(ABORT, 'co.pointfree.SQLiteData.CloudKit.write-permission-error') FROM "rootShares" - WHERE ((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); + WHERE (((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("rootShares"."_isDeleted"))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); INSERT INTO "sqlitedata_icloud_metadata" ("recordPrimaryKey", "recordType", "zoneName", "ownerName", "parentRecordPrimaryKey", "parentRecordType") SELECT "new"."id", 'childWithOnDeleteSetDefaults', coalesce(coalesce(NULL, "sqlitedata_icloud_currentZoneName"(), (SELECT "sqlitedata_icloud_metadata"."zoneName" @@ -417,17 +382,17 @@ AFTER INSERT ON "childWithOnDeleteSetNulls" FOR EACH ROW BEGIN WITH "rootShares" AS ( - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") IS ("new"."parentID")) AND (("sqlitedata_icloud_metadata"."recordType") IS ('parents')) UNION ALL - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" JOIN "rootShares" ON ("sqlitedata_icloud_metadata"."recordName") IS ("rootShares"."parentRecordName") ) SELECT RAISE(ABORT, 'co.pointfree.SQLiteData.CloudKit.write-permission-error') FROM "rootShares" - WHERE ((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); + WHERE (((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("rootShares"."_isDeleted"))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); INSERT INTO "sqlitedata_icloud_metadata" ("recordPrimaryKey", "recordType", "zoneName", "ownerName", "parentRecordPrimaryKey", "parentRecordType") SELECT "new"."id", 'childWithOnDeleteSetNulls', coalesce(coalesce(NULL, "sqlitedata_icloud_currentZoneName"(), (SELECT "sqlitedata_icloud_metadata"."zoneName" @@ -443,17 +408,17 @@ AFTER INSERT ON "modelAs" FOR EACH ROW BEGIN WITH "rootShares" AS ( - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") IS (NULL)) AND (("sqlitedata_icloud_metadata"."recordType") IS (NULL)) UNION ALL - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" JOIN "rootShares" ON ("sqlitedata_icloud_metadata"."recordName") IS ("rootShares"."parentRecordName") ) SELECT RAISE(ABORT, 'co.pointfree.SQLiteData.CloudKit.write-permission-error') FROM "rootShares" - WHERE ((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); + WHERE (((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("rootShares"."_isDeleted"))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); INSERT INTO "sqlitedata_icloud_metadata" ("recordPrimaryKey", "recordType", "zoneName", "ownerName", "parentRecordPrimaryKey", "parentRecordType") SELECT "new"."id", 'modelAs', coalesce("sqlitedata_icloud_currentZoneName"(), 'zone'), coalesce("sqlitedata_icloud_currentOwnerName"(), '__defaultOwner__'), NULL, NULL @@ -465,17 +430,17 @@ AFTER INSERT ON "modelBs" FOR EACH ROW BEGIN WITH "rootShares" AS ( - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") IS ("new"."modelAID")) AND (("sqlitedata_icloud_metadata"."recordType") IS ('modelAs')) UNION ALL - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" JOIN "rootShares" ON ("sqlitedata_icloud_metadata"."recordName") IS ("rootShares"."parentRecordName") ) SELECT RAISE(ABORT, 'co.pointfree.SQLiteData.CloudKit.write-permission-error') FROM "rootShares" - WHERE ((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); + WHERE (((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("rootShares"."_isDeleted"))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); INSERT INTO "sqlitedata_icloud_metadata" ("recordPrimaryKey", "recordType", "zoneName", "ownerName", "parentRecordPrimaryKey", "parentRecordType") SELECT "new"."id", 'modelBs', coalesce(coalesce(NULL, "sqlitedata_icloud_currentZoneName"(), (SELECT "sqlitedata_icloud_metadata"."zoneName" @@ -491,17 +456,17 @@ AFTER INSERT ON "modelCs" FOR EACH ROW BEGIN WITH "rootShares" AS ( - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") IS ("new"."modelBID")) AND (("sqlitedata_icloud_metadata"."recordType") IS ('modelBs')) UNION ALL - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" JOIN "rootShares" ON ("sqlitedata_icloud_metadata"."recordName") IS ("rootShares"."parentRecordName") ) SELECT RAISE(ABORT, 'co.pointfree.SQLiteData.CloudKit.write-permission-error') FROM "rootShares" - WHERE ((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); + WHERE (((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("rootShares"."_isDeleted"))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); INSERT INTO "sqlitedata_icloud_metadata" ("recordPrimaryKey", "recordType", "zoneName", "ownerName", "parentRecordPrimaryKey", "parentRecordType") SELECT "new"."id", 'modelCs', coalesce(coalesce(NULL, "sqlitedata_icloud_currentZoneName"(), (SELECT "sqlitedata_icloud_metadata"."zoneName" @@ -517,17 +482,17 @@ AFTER INSERT ON "parents" FOR EACH ROW BEGIN WITH "rootShares" AS ( - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") IS (NULL)) AND (("sqlitedata_icloud_metadata"."recordType") IS (NULL)) UNION ALL - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" JOIN "rootShares" ON ("sqlitedata_icloud_metadata"."recordName") IS ("rootShares"."parentRecordName") ) SELECT RAISE(ABORT, 'co.pointfree.SQLiteData.CloudKit.write-permission-error') FROM "rootShares" - WHERE ((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); + WHERE (((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("rootShares"."_isDeleted"))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); INSERT INTO "sqlitedata_icloud_metadata" ("recordPrimaryKey", "recordType", "zoneName", "ownerName", "parentRecordPrimaryKey", "parentRecordType") SELECT "new"."id", 'parents', coalesce("sqlitedata_icloud_currentZoneName"(), 'zone'), coalesce("sqlitedata_icloud_currentOwnerName"(), '__defaultOwner__'), NULL, NULL @@ -539,17 +504,17 @@ AFTER INSERT ON "reminderTags" FOR EACH ROW BEGIN WITH "rootShares" AS ( - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") IS (NULL)) AND (("sqlitedata_icloud_metadata"."recordType") IS (NULL)) UNION ALL - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" JOIN "rootShares" ON ("sqlitedata_icloud_metadata"."recordName") IS ("rootShares"."parentRecordName") ) SELECT RAISE(ABORT, 'co.pointfree.SQLiteData.CloudKit.write-permission-error') FROM "rootShares" - WHERE ((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); + WHERE (((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("rootShares"."_isDeleted"))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); INSERT INTO "sqlitedata_icloud_metadata" ("recordPrimaryKey", "recordType", "zoneName", "ownerName", "parentRecordPrimaryKey", "parentRecordType") SELECT "new"."id", 'reminderTags', coalesce("sqlitedata_icloud_currentZoneName"(), 'zone'), coalesce("sqlitedata_icloud_currentOwnerName"(), '__defaultOwner__'), NULL, NULL @@ -561,17 +526,17 @@ AFTER INSERT ON "reminders" FOR EACH ROW BEGIN WITH "rootShares" AS ( - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") IS ("new"."remindersListID")) AND (("sqlitedata_icloud_metadata"."recordType") IS ('remindersLists')) UNION ALL - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" JOIN "rootShares" ON ("sqlitedata_icloud_metadata"."recordName") IS ("rootShares"."parentRecordName") ) SELECT RAISE(ABORT, 'co.pointfree.SQLiteData.CloudKit.write-permission-error') FROM "rootShares" - WHERE ((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); + WHERE (((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("rootShares"."_isDeleted"))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); INSERT INTO "sqlitedata_icloud_metadata" ("recordPrimaryKey", "recordType", "zoneName", "ownerName", "parentRecordPrimaryKey", "parentRecordType") SELECT "new"."id", 'reminders', coalesce(coalesce(NULL, "sqlitedata_icloud_currentZoneName"(), (SELECT "sqlitedata_icloud_metadata"."zoneName" @@ -587,17 +552,17 @@ AFTER INSERT ON "remindersListAssets" FOR EACH ROW BEGIN WITH "rootShares" AS ( - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") IS ("new"."remindersListID")) AND (("sqlitedata_icloud_metadata"."recordType") IS ('remindersLists')) UNION ALL - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" JOIN "rootShares" ON ("sqlitedata_icloud_metadata"."recordName") IS ("rootShares"."parentRecordName") ) SELECT RAISE(ABORT, 'co.pointfree.SQLiteData.CloudKit.write-permission-error') FROM "rootShares" - WHERE ((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); + WHERE (((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("rootShares"."_isDeleted"))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); INSERT INTO "sqlitedata_icloud_metadata" ("recordPrimaryKey", "recordType", "zoneName", "ownerName", "parentRecordPrimaryKey", "parentRecordType") SELECT "new"."remindersListID", 'remindersListAssets', coalesce(coalesce(NULL, "sqlitedata_icloud_currentZoneName"(), (SELECT "sqlitedata_icloud_metadata"."zoneName" @@ -613,17 +578,17 @@ AFTER INSERT ON "remindersListPrivates" FOR EACH ROW BEGIN WITH "rootShares" AS ( - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") IS ("new"."remindersListID")) AND (("sqlitedata_icloud_metadata"."recordType") IS ('remindersLists')) UNION ALL - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" JOIN "rootShares" ON ("sqlitedata_icloud_metadata"."recordName") IS ("rootShares"."parentRecordName") ) SELECT RAISE(ABORT, 'co.pointfree.SQLiteData.CloudKit.write-permission-error') FROM "rootShares" - WHERE ((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); + WHERE (((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("rootShares"."_isDeleted"))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); INSERT INTO "sqlitedata_icloud_metadata" ("recordPrimaryKey", "recordType", "zoneName", "ownerName", "parentRecordPrimaryKey", "parentRecordType") SELECT "new"."remindersListID", 'remindersListPrivates', coalesce(coalesce('zone', "sqlitedata_icloud_currentZoneName"(), (SELECT "sqlitedata_icloud_metadata"."zoneName" @@ -639,17 +604,17 @@ AFTER INSERT ON "remindersLists" FOR EACH ROW BEGIN WITH "rootShares" AS ( - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") IS (NULL)) AND (("sqlitedata_icloud_metadata"."recordType") IS (NULL)) UNION ALL - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" JOIN "rootShares" ON ("sqlitedata_icloud_metadata"."recordName") IS ("rootShares"."parentRecordName") ) SELECT RAISE(ABORT, 'co.pointfree.SQLiteData.CloudKit.write-permission-error') FROM "rootShares" - WHERE ((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); + WHERE (((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("rootShares"."_isDeleted"))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); INSERT INTO "sqlitedata_icloud_metadata" ("recordPrimaryKey", "recordType", "zoneName", "ownerName", "parentRecordPrimaryKey", "parentRecordType") SELECT "new"."id", 'remindersLists', coalesce("sqlitedata_icloud_currentZoneName"(), 'zone'), coalesce("sqlitedata_icloud_currentOwnerName"(), '__defaultOwner__'), NULL, NULL @@ -670,17 +635,17 @@ AFTER INSERT ON "tags" FOR EACH ROW BEGIN WITH "rootShares" AS ( - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") IS (NULL)) AND (("sqlitedata_icloud_metadata"."recordType") IS (NULL)) UNION ALL - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" JOIN "rootShares" ON ("sqlitedata_icloud_metadata"."recordName") IS ("rootShares"."parentRecordName") ) SELECT RAISE(ABORT, 'co.pointfree.SQLiteData.CloudKit.write-permission-error') FROM "rootShares" - WHERE ((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); + WHERE (((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("rootShares"."_isDeleted"))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); INSERT INTO "sqlitedata_icloud_metadata" ("recordPrimaryKey", "recordType", "zoneName", "ownerName", "parentRecordPrimaryKey", "parentRecordType") SELECT "new"."title", 'tags', coalesce("sqlitedata_icloud_currentZoneName"(), 'zone'), coalesce("sqlitedata_icloud_currentOwnerName"(), '__defaultOwner__'), NULL, NULL @@ -692,17 +657,17 @@ AFTER UPDATE OF "id" ON "childWithOnDeleteSetDefaults" FOR EACH ROW WHEN ("old"."id") <> ("new"."id") BEGIN WITH "rootShares" AS ( - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") IS ("new"."parentID")) AND (("sqlitedata_icloud_metadata"."recordType") IS ('parents')) UNION ALL - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" JOIN "rootShares" ON ("sqlitedata_icloud_metadata"."recordName") IS ("rootShares"."parentRecordName") ) SELECT RAISE(ABORT, 'co.pointfree.SQLiteData.CloudKit.write-permission-error') FROM "rootShares" - WHERE ((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); + WHERE (((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("rootShares"."_isDeleted"))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); UPDATE "sqlitedata_icloud_metadata" SET "_isDeleted" = 1 WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") = ("old"."id")) AND (("sqlitedata_icloud_metadata"."recordType") = ('childWithOnDeleteSetDefaults')); @@ -713,17 +678,17 @@ AFTER UPDATE OF "id" ON "childWithOnDeleteSetNulls" FOR EACH ROW WHEN ("old"."id") <> ("new"."id") BEGIN WITH "rootShares" AS ( - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") IS ("new"."parentID")) AND (("sqlitedata_icloud_metadata"."recordType") IS ('parents')) UNION ALL - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" JOIN "rootShares" ON ("sqlitedata_icloud_metadata"."recordName") IS ("rootShares"."parentRecordName") ) SELECT RAISE(ABORT, 'co.pointfree.SQLiteData.CloudKit.write-permission-error') FROM "rootShares" - WHERE ((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); + WHERE (((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("rootShares"."_isDeleted"))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); UPDATE "sqlitedata_icloud_metadata" SET "_isDeleted" = 1 WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") = ("old"."id")) AND (("sqlitedata_icloud_metadata"."recordType") = ('childWithOnDeleteSetNulls')); @@ -734,17 +699,17 @@ AFTER UPDATE OF "id" ON "modelAs" FOR EACH ROW WHEN ("old"."id") <> ("new"."id") BEGIN WITH "rootShares" AS ( - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") IS (NULL)) AND (("sqlitedata_icloud_metadata"."recordType") IS (NULL)) UNION ALL - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" JOIN "rootShares" ON ("sqlitedata_icloud_metadata"."recordName") IS ("rootShares"."parentRecordName") ) SELECT RAISE(ABORT, 'co.pointfree.SQLiteData.CloudKit.write-permission-error') FROM "rootShares" - WHERE ((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); + WHERE (((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("rootShares"."_isDeleted"))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); UPDATE "sqlitedata_icloud_metadata" SET "_isDeleted" = 1 WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") = ("old"."id")) AND (("sqlitedata_icloud_metadata"."recordType") = ('modelAs')); @@ -755,17 +720,17 @@ AFTER UPDATE OF "id" ON "modelBs" FOR EACH ROW WHEN ("old"."id") <> ("new"."id") BEGIN WITH "rootShares" AS ( - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") IS ("new"."modelAID")) AND (("sqlitedata_icloud_metadata"."recordType") IS ('modelAs')) UNION ALL - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" JOIN "rootShares" ON ("sqlitedata_icloud_metadata"."recordName") IS ("rootShares"."parentRecordName") ) SELECT RAISE(ABORT, 'co.pointfree.SQLiteData.CloudKit.write-permission-error') FROM "rootShares" - WHERE ((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); + WHERE (((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("rootShares"."_isDeleted"))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); UPDATE "sqlitedata_icloud_metadata" SET "_isDeleted" = 1 WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") = ("old"."id")) AND (("sqlitedata_icloud_metadata"."recordType") = ('modelBs')); @@ -776,17 +741,17 @@ AFTER UPDATE OF "id" ON "modelCs" FOR EACH ROW WHEN ("old"."id") <> ("new"."id") BEGIN WITH "rootShares" AS ( - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") IS ("new"."modelBID")) AND (("sqlitedata_icloud_metadata"."recordType") IS ('modelBs')) UNION ALL - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" JOIN "rootShares" ON ("sqlitedata_icloud_metadata"."recordName") IS ("rootShares"."parentRecordName") ) SELECT RAISE(ABORT, 'co.pointfree.SQLiteData.CloudKit.write-permission-error') FROM "rootShares" - WHERE ((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); + WHERE (((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("rootShares"."_isDeleted"))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); UPDATE "sqlitedata_icloud_metadata" SET "_isDeleted" = 1 WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") = ("old"."id")) AND (("sqlitedata_icloud_metadata"."recordType") = ('modelCs')); @@ -797,17 +762,17 @@ AFTER UPDATE OF "id" ON "parents" FOR EACH ROW WHEN ("old"."id") <> ("new"."id") BEGIN WITH "rootShares" AS ( - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") IS (NULL)) AND (("sqlitedata_icloud_metadata"."recordType") IS (NULL)) UNION ALL - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" JOIN "rootShares" ON ("sqlitedata_icloud_metadata"."recordName") IS ("rootShares"."parentRecordName") ) SELECT RAISE(ABORT, 'co.pointfree.SQLiteData.CloudKit.write-permission-error') FROM "rootShares" - WHERE ((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); + WHERE (((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("rootShares"."_isDeleted"))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); UPDATE "sqlitedata_icloud_metadata" SET "_isDeleted" = 1 WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") = ("old"."id")) AND (("sqlitedata_icloud_metadata"."recordType") = ('parents')); @@ -818,17 +783,17 @@ AFTER UPDATE OF "id" ON "reminderTags" FOR EACH ROW WHEN ("old"."id") <> ("new"."id") BEGIN WITH "rootShares" AS ( - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") IS (NULL)) AND (("sqlitedata_icloud_metadata"."recordType") IS (NULL)) UNION ALL - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" JOIN "rootShares" ON ("sqlitedata_icloud_metadata"."recordName") IS ("rootShares"."parentRecordName") ) SELECT RAISE(ABORT, 'co.pointfree.SQLiteData.CloudKit.write-permission-error') FROM "rootShares" - WHERE ((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); + WHERE (((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("rootShares"."_isDeleted"))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); UPDATE "sqlitedata_icloud_metadata" SET "_isDeleted" = 1 WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") = ("old"."id")) AND (("sqlitedata_icloud_metadata"."recordType") = ('reminderTags')); @@ -839,17 +804,17 @@ AFTER UPDATE OF "id" ON "reminders" FOR EACH ROW WHEN ("old"."id") <> ("new"."id") BEGIN WITH "rootShares" AS ( - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") IS ("new"."remindersListID")) AND (("sqlitedata_icloud_metadata"."recordType") IS ('remindersLists')) UNION ALL - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" JOIN "rootShares" ON ("sqlitedata_icloud_metadata"."recordName") IS ("rootShares"."parentRecordName") ) SELECT RAISE(ABORT, 'co.pointfree.SQLiteData.CloudKit.write-permission-error') FROM "rootShares" - WHERE ((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); + WHERE (((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("rootShares"."_isDeleted"))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); UPDATE "sqlitedata_icloud_metadata" SET "_isDeleted" = 1 WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") = ("old"."id")) AND (("sqlitedata_icloud_metadata"."recordType") = ('reminders')); @@ -860,17 +825,17 @@ AFTER UPDATE OF "remindersListID" ON "remindersListAssets" FOR EACH ROW WHEN ("old"."remindersListID") <> ("new"."remindersListID") BEGIN WITH "rootShares" AS ( - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") IS ("new"."remindersListID")) AND (("sqlitedata_icloud_metadata"."recordType") IS ('remindersLists')) UNION ALL - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" JOIN "rootShares" ON ("sqlitedata_icloud_metadata"."recordName") IS ("rootShares"."parentRecordName") ) SELECT RAISE(ABORT, 'co.pointfree.SQLiteData.CloudKit.write-permission-error') FROM "rootShares" - WHERE ((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); + WHERE (((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("rootShares"."_isDeleted"))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); UPDATE "sqlitedata_icloud_metadata" SET "_isDeleted" = 1 WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") = ("old"."remindersListID")) AND (("sqlitedata_icloud_metadata"."recordType") = ('remindersListAssets')); @@ -881,17 +846,17 @@ AFTER UPDATE OF "remindersListID" ON "remindersListPrivates" FOR EACH ROW WHEN ("old"."remindersListID") <> ("new"."remindersListID") BEGIN WITH "rootShares" AS ( - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") IS ("new"."remindersListID")) AND (("sqlitedata_icloud_metadata"."recordType") IS ('remindersLists')) UNION ALL - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" JOIN "rootShares" ON ("sqlitedata_icloud_metadata"."recordName") IS ("rootShares"."parentRecordName") ) SELECT RAISE(ABORT, 'co.pointfree.SQLiteData.CloudKit.write-permission-error') FROM "rootShares" - WHERE ((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); + WHERE (((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("rootShares"."_isDeleted"))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); UPDATE "sqlitedata_icloud_metadata" SET "_isDeleted" = 1 WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") = ("old"."remindersListID")) AND (("sqlitedata_icloud_metadata"."recordType") = ('remindersListPrivates')); @@ -902,17 +867,17 @@ AFTER UPDATE OF "id" ON "remindersLists" FOR EACH ROW WHEN ("old"."id") <> ("new"."id") BEGIN WITH "rootShares" AS ( - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") IS (NULL)) AND (("sqlitedata_icloud_metadata"."recordType") IS (NULL)) UNION ALL - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" JOIN "rootShares" ON ("sqlitedata_icloud_metadata"."recordName") IS ("rootShares"."parentRecordName") ) SELECT RAISE(ABORT, 'co.pointfree.SQLiteData.CloudKit.write-permission-error') FROM "rootShares" - WHERE ((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); + WHERE (((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("rootShares"."_isDeleted"))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); UPDATE "sqlitedata_icloud_metadata" SET "_isDeleted" = 1 WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") = ("old"."id")) AND (("sqlitedata_icloud_metadata"."recordType") = ('remindersLists')); @@ -923,17 +888,17 @@ AFTER UPDATE OF "title" ON "tags" FOR EACH ROW WHEN ("old"."title") <> ("new"."title") BEGIN WITH "rootShares" AS ( - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") IS (NULL)) AND (("sqlitedata_icloud_metadata"."recordType") IS (NULL)) UNION ALL - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" JOIN "rootShares" ON ("sqlitedata_icloud_metadata"."recordName") IS ("rootShares"."parentRecordName") ) SELECT RAISE(ABORT, 'co.pointfree.SQLiteData.CloudKit.write-permission-error') FROM "rootShares" - WHERE ((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); + WHERE (((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("rootShares"."_isDeleted"))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); UPDATE "sqlitedata_icloud_metadata" SET "_isDeleted" = 1 WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") = ("old"."title")) AND (("sqlitedata_icloud_metadata"."recordType") = ('tags')); @@ -944,17 +909,17 @@ AFTER UPDATE ON "childWithOnDeleteSetDefaults" FOR EACH ROW BEGIN WITH "rootShares" AS ( - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") IS ("new"."parentID")) AND (("sqlitedata_icloud_metadata"."recordType") IS ('parents')) UNION ALL - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" JOIN "rootShares" ON ("sqlitedata_icloud_metadata"."recordName") IS ("rootShares"."parentRecordName") ) SELECT RAISE(ABORT, 'co.pointfree.SQLiteData.CloudKit.write-permission-error') FROM "rootShares" - WHERE ((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); + WHERE (((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("rootShares"."_isDeleted"))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); INSERT INTO "sqlitedata_icloud_metadata" ("recordPrimaryKey", "recordType", "zoneName", "ownerName", "parentRecordPrimaryKey", "parentRecordType") SELECT "new"."id", 'childWithOnDeleteSetDefaults', coalesce(coalesce(NULL, "sqlitedata_icloud_currentZoneName"(), (SELECT "sqlitedata_icloud_metadata"."zoneName" @@ -977,17 +942,17 @@ AFTER UPDATE ON "childWithOnDeleteSetNulls" FOR EACH ROW BEGIN WITH "rootShares" AS ( - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") IS ("new"."parentID")) AND (("sqlitedata_icloud_metadata"."recordType") IS ('parents')) UNION ALL - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" JOIN "rootShares" ON ("sqlitedata_icloud_metadata"."recordName") IS ("rootShares"."parentRecordName") ) SELECT RAISE(ABORT, 'co.pointfree.SQLiteData.CloudKit.write-permission-error') FROM "rootShares" - WHERE ((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); + WHERE (((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("rootShares"."_isDeleted"))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); INSERT INTO "sqlitedata_icloud_metadata" ("recordPrimaryKey", "recordType", "zoneName", "ownerName", "parentRecordPrimaryKey", "parentRecordType") SELECT "new"."id", 'childWithOnDeleteSetNulls', coalesce(coalesce(NULL, "sqlitedata_icloud_currentZoneName"(), (SELECT "sqlitedata_icloud_metadata"."zoneName" @@ -1010,17 +975,17 @@ AFTER UPDATE ON "modelAs" FOR EACH ROW BEGIN WITH "rootShares" AS ( - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") IS (NULL)) AND (("sqlitedata_icloud_metadata"."recordType") IS (NULL)) UNION ALL - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" JOIN "rootShares" ON ("sqlitedata_icloud_metadata"."recordName") IS ("rootShares"."parentRecordName") ) SELECT RAISE(ABORT, 'co.pointfree.SQLiteData.CloudKit.write-permission-error') FROM "rootShares" - WHERE ((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); + WHERE (((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("rootShares"."_isDeleted"))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); INSERT INTO "sqlitedata_icloud_metadata" ("recordPrimaryKey", "recordType", "zoneName", "ownerName", "parentRecordPrimaryKey", "parentRecordType") SELECT "new"."id", 'modelAs', coalesce("sqlitedata_icloud_currentZoneName"(), 'zone'), coalesce("sqlitedata_icloud_currentOwnerName"(), '__defaultOwner__'), NULL, NULL @@ -1035,17 +1000,17 @@ AFTER UPDATE ON "modelBs" FOR EACH ROW BEGIN WITH "rootShares" AS ( - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") IS ("new"."modelAID")) AND (("sqlitedata_icloud_metadata"."recordType") IS ('modelAs')) UNION ALL - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" JOIN "rootShares" ON ("sqlitedata_icloud_metadata"."recordName") IS ("rootShares"."parentRecordName") ) SELECT RAISE(ABORT, 'co.pointfree.SQLiteData.CloudKit.write-permission-error') FROM "rootShares" - WHERE ((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); + WHERE (((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("rootShares"."_isDeleted"))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); INSERT INTO "sqlitedata_icloud_metadata" ("recordPrimaryKey", "recordType", "zoneName", "ownerName", "parentRecordPrimaryKey", "parentRecordType") SELECT "new"."id", 'modelBs', coalesce(coalesce(NULL, "sqlitedata_icloud_currentZoneName"(), (SELECT "sqlitedata_icloud_metadata"."zoneName" @@ -1068,17 +1033,17 @@ AFTER UPDATE ON "modelCs" FOR EACH ROW BEGIN WITH "rootShares" AS ( - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") IS ("new"."modelBID")) AND (("sqlitedata_icloud_metadata"."recordType") IS ('modelBs')) UNION ALL - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" JOIN "rootShares" ON ("sqlitedata_icloud_metadata"."recordName") IS ("rootShares"."parentRecordName") ) SELECT RAISE(ABORT, 'co.pointfree.SQLiteData.CloudKit.write-permission-error') FROM "rootShares" - WHERE ((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); + WHERE (((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("rootShares"."_isDeleted"))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); INSERT INTO "sqlitedata_icloud_metadata" ("recordPrimaryKey", "recordType", "zoneName", "ownerName", "parentRecordPrimaryKey", "parentRecordType") SELECT "new"."id", 'modelCs', coalesce(coalesce(NULL, "sqlitedata_icloud_currentZoneName"(), (SELECT "sqlitedata_icloud_metadata"."zoneName" @@ -1101,17 +1066,17 @@ AFTER UPDATE ON "parents" FOR EACH ROW BEGIN WITH "rootShares" AS ( - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") IS (NULL)) AND (("sqlitedata_icloud_metadata"."recordType") IS (NULL)) UNION ALL - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" JOIN "rootShares" ON ("sqlitedata_icloud_metadata"."recordName") IS ("rootShares"."parentRecordName") ) SELECT RAISE(ABORT, 'co.pointfree.SQLiteData.CloudKit.write-permission-error') FROM "rootShares" - WHERE ((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); + WHERE (((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("rootShares"."_isDeleted"))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); INSERT INTO "sqlitedata_icloud_metadata" ("recordPrimaryKey", "recordType", "zoneName", "ownerName", "parentRecordPrimaryKey", "parentRecordType") SELECT "new"."id", 'parents', coalesce("sqlitedata_icloud_currentZoneName"(), 'zone'), coalesce("sqlitedata_icloud_currentOwnerName"(), '__defaultOwner__'), NULL, NULL @@ -1126,17 +1091,17 @@ AFTER UPDATE ON "reminderTags" FOR EACH ROW BEGIN WITH "rootShares" AS ( - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") IS (NULL)) AND (("sqlitedata_icloud_metadata"."recordType") IS (NULL)) UNION ALL - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" JOIN "rootShares" ON ("sqlitedata_icloud_metadata"."recordName") IS ("rootShares"."parentRecordName") ) SELECT RAISE(ABORT, 'co.pointfree.SQLiteData.CloudKit.write-permission-error') FROM "rootShares" - WHERE ((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); + WHERE (((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("rootShares"."_isDeleted"))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); INSERT INTO "sqlitedata_icloud_metadata" ("recordPrimaryKey", "recordType", "zoneName", "ownerName", "parentRecordPrimaryKey", "parentRecordType") SELECT "new"."id", 'reminderTags', coalesce("sqlitedata_icloud_currentZoneName"(), 'zone'), coalesce("sqlitedata_icloud_currentOwnerName"(), '__defaultOwner__'), NULL, NULL @@ -1151,17 +1116,17 @@ AFTER UPDATE ON "reminders" FOR EACH ROW BEGIN WITH "rootShares" AS ( - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") IS ("new"."remindersListID")) AND (("sqlitedata_icloud_metadata"."recordType") IS ('remindersLists')) UNION ALL - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" JOIN "rootShares" ON ("sqlitedata_icloud_metadata"."recordName") IS ("rootShares"."parentRecordName") ) SELECT RAISE(ABORT, 'co.pointfree.SQLiteData.CloudKit.write-permission-error') FROM "rootShares" - WHERE ((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); + WHERE (((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("rootShares"."_isDeleted"))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); INSERT INTO "sqlitedata_icloud_metadata" ("recordPrimaryKey", "recordType", "zoneName", "ownerName", "parentRecordPrimaryKey", "parentRecordType") SELECT "new"."id", 'reminders', coalesce(coalesce(NULL, "sqlitedata_icloud_currentZoneName"(), (SELECT "sqlitedata_icloud_metadata"."zoneName" @@ -1184,17 +1149,17 @@ AFTER UPDATE ON "remindersListAssets" FOR EACH ROW BEGIN WITH "rootShares" AS ( - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") IS ("new"."remindersListID")) AND (("sqlitedata_icloud_metadata"."recordType") IS ('remindersLists')) UNION ALL - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" JOIN "rootShares" ON ("sqlitedata_icloud_metadata"."recordName") IS ("rootShares"."parentRecordName") ) SELECT RAISE(ABORT, 'co.pointfree.SQLiteData.CloudKit.write-permission-error') FROM "rootShares" - WHERE ((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); + WHERE (((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("rootShares"."_isDeleted"))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); INSERT INTO "sqlitedata_icloud_metadata" ("recordPrimaryKey", "recordType", "zoneName", "ownerName", "parentRecordPrimaryKey", "parentRecordType") SELECT "new"."remindersListID", 'remindersListAssets', coalesce(coalesce(NULL, "sqlitedata_icloud_currentZoneName"(), (SELECT "sqlitedata_icloud_metadata"."zoneName" @@ -1217,17 +1182,17 @@ AFTER UPDATE ON "remindersListPrivates" FOR EACH ROW BEGIN WITH "rootShares" AS ( - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") IS ("new"."remindersListID")) AND (("sqlitedata_icloud_metadata"."recordType") IS ('remindersLists')) UNION ALL - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" JOIN "rootShares" ON ("sqlitedata_icloud_metadata"."recordName") IS ("rootShares"."parentRecordName") ) SELECT RAISE(ABORT, 'co.pointfree.SQLiteData.CloudKit.write-permission-error') FROM "rootShares" - WHERE ((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); + WHERE (((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("rootShares"."_isDeleted"))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); INSERT INTO "sqlitedata_icloud_metadata" ("recordPrimaryKey", "recordType", "zoneName", "ownerName", "parentRecordPrimaryKey", "parentRecordType") SELECT "new"."remindersListID", 'remindersListPrivates', coalesce(coalesce('zone', "sqlitedata_icloud_currentZoneName"(), (SELECT "sqlitedata_icloud_metadata"."zoneName" @@ -1250,17 +1215,17 @@ AFTER UPDATE ON "remindersLists" FOR EACH ROW BEGIN WITH "rootShares" AS ( - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") IS (NULL)) AND (("sqlitedata_icloud_metadata"."recordType") IS (NULL)) UNION ALL - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" JOIN "rootShares" ON ("sqlitedata_icloud_metadata"."recordName") IS ("rootShares"."parentRecordName") ) SELECT RAISE(ABORT, 'co.pointfree.SQLiteData.CloudKit.write-permission-error') FROM "rootShares" - WHERE ((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); + WHERE (((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("rootShares"."_isDeleted"))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); INSERT INTO "sqlitedata_icloud_metadata" ("recordPrimaryKey", "recordType", "zoneName", "ownerName", "parentRecordPrimaryKey", "parentRecordType") SELECT "new"."id", 'remindersLists', coalesce("sqlitedata_icloud_currentZoneName"(), 'zone'), coalesce("sqlitedata_icloud_currentOwnerName"(), '__defaultOwner__'), NULL, NULL @@ -1297,17 +1262,17 @@ AFTER UPDATE ON "tags" FOR EACH ROW BEGIN WITH "rootShares" AS ( - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") IS (NULL)) AND (("sqlitedata_icloud_metadata"."recordType") IS (NULL)) UNION ALL - SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share" + SELECT "sqlitedata_icloud_metadata"."parentRecordName" AS "parentRecordName", "sqlitedata_icloud_metadata"."share" AS "share", "sqlitedata_icloud_metadata"."_isDeleted" AS "_isDeleted" FROM "sqlitedata_icloud_metadata" JOIN "rootShares" ON ("sqlitedata_icloud_metadata"."recordName") IS ("rootShares"."parentRecordName") ) SELECT RAISE(ABORT, 'co.pointfree.SQLiteData.CloudKit.write-permission-error') FROM "rootShares" - WHERE ((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); + WHERE (((NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"())) AND (("rootShares"."parentRecordName") IS (NULL))) AND (NOT ("rootShares"."_isDeleted"))) AND (NOT ("sqlitedata_icloud_hasPermission"("rootShares"."share"))); INSERT INTO "sqlitedata_icloud_metadata" ("recordPrimaryKey", "recordType", "zoneName", "ownerName", "parentRecordPrimaryKey", "parentRecordType") SELECT "new"."title", 'tags', coalesce("sqlitedata_icloud_currentZoneName"(), 'zone'), coalesce("sqlitedata_icloud_currentOwnerName"(), '__defaultOwner__'), NULL, NULL @@ -1335,6 +1300,114 @@ SELECT "descendantMetadatas"."recordName" FROM "descendantMetadatas")); END + """, + [64]: """ + CREATE TRIGGER "sqlitedata_icloud_before_delete_on_childWithOnDeleteSetDefaults_from_user" + BEFORE DELETE ON "childWithOnDeleteSetDefaults" + FOR EACH ROW WHEN NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"()) BEGIN + UPDATE "sqlitedata_icloud_metadata" + SET "_isDeleted" = 1 + WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") = ("old"."id")) AND (("sqlitedata_icloud_metadata"."recordType") = ('childWithOnDeleteSetDefaults')); + END + """, + [65]: """ + CREATE TRIGGER "sqlitedata_icloud_before_delete_on_childWithOnDeleteSetNulls_from_user" + BEFORE DELETE ON "childWithOnDeleteSetNulls" + FOR EACH ROW WHEN NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"()) BEGIN + UPDATE "sqlitedata_icloud_metadata" + SET "_isDeleted" = 1 + WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") = ("old"."id")) AND (("sqlitedata_icloud_metadata"."recordType") = ('childWithOnDeleteSetNulls')); + END + """, + [66]: """ + CREATE TRIGGER "sqlitedata_icloud_before_delete_on_modelAs_from_user" + BEFORE DELETE ON "modelAs" + FOR EACH ROW WHEN NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"()) BEGIN + UPDATE "sqlitedata_icloud_metadata" + SET "_isDeleted" = 1 + WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") = ("old"."id")) AND (("sqlitedata_icloud_metadata"."recordType") = ('modelAs')); + END + """, + [67]: """ + CREATE TRIGGER "sqlitedata_icloud_before_delete_on_modelBs_from_user" + BEFORE DELETE ON "modelBs" + FOR EACH ROW WHEN NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"()) BEGIN + UPDATE "sqlitedata_icloud_metadata" + SET "_isDeleted" = 1 + WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") = ("old"."id")) AND (("sqlitedata_icloud_metadata"."recordType") = ('modelBs')); + END + """, + [68]: """ + CREATE TRIGGER "sqlitedata_icloud_before_delete_on_modelCs_from_user" + BEFORE DELETE ON "modelCs" + FOR EACH ROW WHEN NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"()) BEGIN + UPDATE "sqlitedata_icloud_metadata" + SET "_isDeleted" = 1 + WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") = ("old"."id")) AND (("sqlitedata_icloud_metadata"."recordType") = ('modelCs')); + END + """, + [69]: """ + CREATE TRIGGER "sqlitedata_icloud_before_delete_on_parents_from_user" + BEFORE DELETE ON "parents" + FOR EACH ROW WHEN NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"()) BEGIN + UPDATE "sqlitedata_icloud_metadata" + SET "_isDeleted" = 1 + WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") = ("old"."id")) AND (("sqlitedata_icloud_metadata"."recordType") = ('parents')); + END + """, + [70]: """ + CREATE TRIGGER "sqlitedata_icloud_before_delete_on_reminderTags_from_user" + BEFORE DELETE ON "reminderTags" + FOR EACH ROW WHEN NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"()) BEGIN + UPDATE "sqlitedata_icloud_metadata" + SET "_isDeleted" = 1 + WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") = ("old"."id")) AND (("sqlitedata_icloud_metadata"."recordType") = ('reminderTags')); + END + """, + [71]: """ + CREATE TRIGGER "sqlitedata_icloud_before_delete_on_remindersListAssets_from_user" + BEFORE DELETE ON "remindersListAssets" + FOR EACH ROW WHEN NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"()) BEGIN + UPDATE "sqlitedata_icloud_metadata" + SET "_isDeleted" = 1 + WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") = ("old"."remindersListID")) AND (("sqlitedata_icloud_metadata"."recordType") = ('remindersListAssets')); + END + """, + [72]: """ + CREATE TRIGGER "sqlitedata_icloud_before_delete_on_remindersListPrivates_from_user" + BEFORE DELETE ON "remindersListPrivates" + FOR EACH ROW WHEN NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"()) BEGIN + UPDATE "sqlitedata_icloud_metadata" + SET "_isDeleted" = 1 + WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") = ("old"."remindersListID")) AND (("sqlitedata_icloud_metadata"."recordType") = ('remindersListPrivates')); + END + """, + [73]: """ + CREATE TRIGGER "sqlitedata_icloud_before_delete_on_remindersLists_from_user" + BEFORE DELETE ON "remindersLists" + FOR EACH ROW WHEN NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"()) BEGIN + UPDATE "sqlitedata_icloud_metadata" + SET "_isDeleted" = 1 + WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") = ("old"."id")) AND (("sqlitedata_icloud_metadata"."recordType") = ('remindersLists')); + END + """, + [74]: """ + CREATE TRIGGER "sqlitedata_icloud_before_delete_on_reminders_from_user" + BEFORE DELETE ON "reminders" + FOR EACH ROW WHEN NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"()) BEGIN + UPDATE "sqlitedata_icloud_metadata" + SET "_isDeleted" = 1 + WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") = ("old"."id")) AND (("sqlitedata_icloud_metadata"."recordType") = ('reminders')); + END + """, + [75]: """ + CREATE TRIGGER "sqlitedata_icloud_before_delete_on_tags_from_user" + BEFORE DELETE ON "tags" + FOR EACH ROW WHEN NOT ("sqlitedata_icloud_syncEngineIsSynchronizingChanges"()) BEGIN + UPDATE "sqlitedata_icloud_metadata" + SET "_isDeleted" = 1 + WHERE (("sqlitedata_icloud_metadata"."recordPrimaryKey") = ("old"."title")) AND (("sqlitedata_icloud_metadata"."recordType") = ('tags')); + END """ ] """#