|
915 | 915 | parentForeignKey: parentForeignKey, |
916 | 916 | defaultZone: defaultZone, |
917 | 917 | privateTables: privateTables |
918 | | - ) |
919 | | - { |
| 918 | + ) { |
920 | 919 | try trigger.execute(db) |
921 | 920 | } |
922 | 921 | } |
|
932 | 931 | defaultZone: defaultZone, |
933 | 932 | privateTables: privateTables |
934 | 933 | ) |
935 | | - .reversed() { |
| 934 | + .reversed() { |
936 | 935 | try trigger.drop().execute(db) |
937 | 936 | } |
938 | 937 | } |
|
1722 | 1721 | } |
1723 | 1722 | } |
1724 | 1723 |
|
| 1724 | + for (failedRecordID, error) in failedRecordDeletes { |
| 1725 | + } |
| 1726 | + |
| 1727 | + // |
| 1728 | + // |
| 1729 | + |
1725 | 1730 | let enqueuedUnsyncedRecordID = |
1726 | 1731 | await withErrorReporting(.sqliteDataCloudKitFailure) { |
1727 | 1732 | try await userDatabase.write { db in |
1728 | 1733 | var enqueuedUnsyncedRecordID = false |
1729 | 1734 | for (failedRecordID, error) in failedRecordDeletes { |
1730 | | - guard |
1731 | | - error.code == .referenceViolation |
1732 | | - else { continue } |
1733 | | - try UnsyncedRecordID.insert(or: .ignore) { |
1734 | | - UnsyncedRecordID(recordID: failedRecordID) |
| 1735 | + switch error.code { |
| 1736 | + case .referenceViolation: |
| 1737 | + enqueuedUnsyncedRecordID = true |
| 1738 | + try UnsyncedRecordID.insert(or: .ignore) { |
| 1739 | + UnsyncedRecordID(recordID: failedRecordID) |
| 1740 | + } |
| 1741 | + .execute(db) |
| 1742 | + syncEngine.state.remove(pendingRecordZoneChanges: [.deleteRecord(failedRecordID)]) |
| 1743 | + break |
| 1744 | + case .batchRequestFailed: |
| 1745 | + syncEngine.state.add(pendingRecordZoneChanges: [.deleteRecord(failedRecordID)]) |
| 1746 | + break |
| 1747 | + case .networkFailure, .networkUnavailable, .zoneBusy, .serviceUnavailable, |
| 1748 | + .notAuthenticated, .operationCancelled, .internalError, .partialFailure, |
| 1749 | + .badContainer, .requestRateLimited, .missingEntitlement, .invalidArguments, |
| 1750 | + .resultsTruncated, .assetFileNotFound, .assetFileModified, .incompatibleVersion, |
| 1751 | + .constraintViolation, .changeTokenExpired, .badDatabase, .quotaExceeded, |
| 1752 | + .limitExceeded, .userDeletedZone, .tooManyParticipants, .alreadyShared, |
| 1753 | + .managedAccountRestricted, .participantMayNeedVerification, .serverResponseLost, |
| 1754 | + .assetNotAvailable, .accountTemporarilyUnavailable, .permissionFailure, |
| 1755 | + .unknownItem, .serverRecordChanged, .serverRejectedRequest, .zoneNotFound, |
| 1756 | + .participantAlreadyInvited: |
| 1757 | + break |
| 1758 | + @unknown default: |
| 1759 | + break |
1735 | 1760 | } |
1736 | | - .execute(db) |
1737 | | - syncEngine.state.remove(pendingRecordZoneChanges: [.deleteRecord(failedRecordID)]) |
1738 | | - enqueuedUnsyncedRecordID = true |
1739 | 1761 | } |
1740 | 1762 | return enqueuedUnsyncedRecordID |
1741 | 1763 | } |
|
0 commit comments