Make SyncDatabase.resetSelectedForProcessing and .deleteSelectedForProcessing take Set parameter instead of Array.

This commit is contained in:
Brent Simmons 2024-05-14 21:05:33 -07:00
parent a474a8fc18
commit ab4d51b462
8 changed files with 17 additions and 16 deletions

View File

@ -66,7 +66,7 @@ private extension CloudKitArticlesZoneDelegate {
return
}
try? await database.deleteSelectedForProcessing(Array(deletableArticleIDs))
try? await database.deleteSelectedForProcessing(deletableArticleIDs)
try? await account?.delete(articleIDs: deletableArticleIDs)
}

View File

@ -729,11 +729,12 @@ private extension FeedbinAccountDelegate {
let articleIDGroups = articleIDs.chunked(into: 1000)
for articleIDGroup in articleIDGroups {
let articleIDsGroupAsString = Set(articleIDGroup.map { String($0) })
do {
try await apiCall(articleIDGroup)
try? await database.deleteSelectedForProcessing(articleIDGroup.map { String($0) } )
try? await database.deleteSelectedForProcessing(articleIDsGroupAsString)
} catch {
try? await database.resetSelectedForProcessing(articleIDGroup.map { String($0) } )
try? await database.resetSelectedForProcessing(articleIDsGroupAsString)
localError = error
os_log(.error, log: self.log, "Article status sync call failed: %@.", error.localizedDescription)
}

View File

@ -563,9 +563,9 @@ final class FeedlyAccountDelegate: AccountDelegate {
do {
try await caller.mark(articleIDs, as: statusAction.action)
try? await syncDatabase.deleteSelectedForProcessing(Array(articleIDs))
try? await syncDatabase.deleteSelectedForProcessing(articleIDs)
} catch {
try? await syncDatabase.resetSelectedForProcessing(Array(articleIDs))
try? await syncDatabase.resetSelectedForProcessing(articleIDs)
throw error
}
}

View File

@ -272,7 +272,7 @@ extension NewsBlurAccountDelegate {
} catch {
errorOccurred = true
os_log(.error, log: self.log, "Story status sync call failed: %@.", error.localizedDescription)
try? await syncDatabase.resetSelectedForProcessing(storyHashGroup.map { String($0) } )
try? await syncDatabase.resetSelectedForProcessing(Set(storyHashGroup))
}
}

View File

@ -693,10 +693,10 @@ private extension ReaderAPIAccountDelegate {
do {
let _ = try await apiCall(articleIDGroup)
try? await database.deleteSelectedForProcessing(articleIDGroup.map { $0 } )
try? await database.deleteSelectedForProcessing(Set(articleIDGroup))
} catch {
os_log(.error, log: self.log, "Article status sync call failed: %@.", error.localizedDescription)
try? await database.resetSelectedForProcessing(articleIDGroup.map { $0 } )
try? await database.resetSelectedForProcessing(Set(articleIDGroup))
}
}
}

View File

@ -142,7 +142,7 @@ private extension CloudKitSendStatusOperation {
// but the articles didn't come back in the fetch. We need to clean up those sync records
// and stop processing.
if statusUpdates.isEmpty {
try? await self.database.deleteSelectedForProcessing(articleIDs)
try? await self.database.deleteSelectedForProcessing(Set(articleIDs))
done(true)
return
}
@ -151,10 +151,10 @@ private extension CloudKitSendStatusOperation {
Task { @MainActor in
switch result {
case .success:
try? await self.database.deleteSelectedForProcessing(statusUpdates.map({ $0.articleID }))
try? await self.database.deleteSelectedForProcessing(Set(statusUpdates.map({ $0.articleID })))
done(false)
case .failure(let error):
try? await self.database.resetSelectedForProcessing(syncStatuses.map({ $0.articleID }))
try? await self.database.resetSelectedForProcessing(Set(syncStatuses.map({ $0.articleID })))
self.processAccountError(error)
os_log(.error, log: self.log, "Send article status modify articles error: %@.", error.localizedDescription)
completion(true)
@ -162,7 +162,7 @@ private extension CloudKitSendStatusOperation {
}
}
} catch {
try? await self.database.resetSelectedForProcessing(syncStatuses.map({ $0.articleID }))
try? await self.database.resetSelectedForProcessing(Set(syncStatuses.map({ $0.articleID })))
os_log(.error, log: self.log, "Send article status fetch articles error: %@.", error.localizedDescription)
completion(true)
}

View File

@ -76,7 +76,7 @@ public actor SyncDatabase {
syncStatusTable.resetAllSelectedForProcessing(database: database)
}
public func resetSelectedForProcessing(_ articleIDs: [String]) throws {
public func resetSelectedForProcessing(_ articleIDs: Set<String>) throws {
guard let database else {
throw DatabaseError.suspended
@ -84,7 +84,7 @@ public actor SyncDatabase {
syncStatusTable.resetSelectedForProcessing(articleIDs, database: database)
}
public func deleteSelectedForProcessing(_ articleIDs: [String]) throws {
public func deleteSelectedForProcessing(_ articleIDs: Set<String>) throws {
guard let database else {
throw DatabaseError.suspended

View File

@ -62,7 +62,7 @@ struct SyncStatusTable {
database.executeUpdateInTransaction(updateSQL)
}
func resetSelectedForProcessing(_ articleIDs: [String], database: FMDatabase) {
func resetSelectedForProcessing(_ articleIDs: Set<String>, database: FMDatabase) {
guard !articleIDs.isEmpty else {
return
@ -75,7 +75,7 @@ struct SyncStatusTable {
database.executeUpdateInTransaction(updateSQL, withArgumentsIn: parameters)
}
func deleteSelectedForProcessing(_ articleIDs: [String], database: FMDatabase) {
func deleteSelectedForProcessing(_ articleIDs: Set<String>, database: FMDatabase) {
guard !articleIDs.isEmpty else {
return