Make SyncDatabase.resetSelectedForProcessing and .deleteSelectedForProcessing take Set parameter instead of Array.
This commit is contained in:
parent
a474a8fc18
commit
ab4d51b462
Account/Sources/Account
CloudKit
Feedbin
Feedly
NewsBlur
ReaderAPI
CloudKitSync/Sources/CloudKitSync
SyncDatabase/Sources/SyncDatabase
@ -66,7 +66,7 @@ private extension CloudKitArticlesZoneDelegate {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
try? await database.deleteSelectedForProcessing(Array(deletableArticleIDs))
|
try? await database.deleteSelectedForProcessing(deletableArticleIDs)
|
||||||
try? await account?.delete(articleIDs: deletableArticleIDs)
|
try? await account?.delete(articleIDs: deletableArticleIDs)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -729,11 +729,12 @@ private extension FeedbinAccountDelegate {
|
|||||||
let articleIDGroups = articleIDs.chunked(into: 1000)
|
let articleIDGroups = articleIDs.chunked(into: 1000)
|
||||||
for articleIDGroup in articleIDGroups {
|
for articleIDGroup in articleIDGroups {
|
||||||
|
|
||||||
|
let articleIDsGroupAsString = Set(articleIDGroup.map { String($0) })
|
||||||
do {
|
do {
|
||||||
try await apiCall(articleIDGroup)
|
try await apiCall(articleIDGroup)
|
||||||
try? await database.deleteSelectedForProcessing(articleIDGroup.map { String($0) } )
|
try? await database.deleteSelectedForProcessing(articleIDsGroupAsString)
|
||||||
} catch {
|
} catch {
|
||||||
try? await database.resetSelectedForProcessing(articleIDGroup.map { String($0) } )
|
try? await database.resetSelectedForProcessing(articleIDsGroupAsString)
|
||||||
localError = error
|
localError = error
|
||||||
os_log(.error, log: self.log, "Article status sync call failed: %@.", error.localizedDescription)
|
os_log(.error, log: self.log, "Article status sync call failed: %@.", error.localizedDescription)
|
||||||
}
|
}
|
||||||
|
@ -563,9 +563,9 @@ final class FeedlyAccountDelegate: AccountDelegate {
|
|||||||
|
|
||||||
do {
|
do {
|
||||||
try await caller.mark(articleIDs, as: statusAction.action)
|
try await caller.mark(articleIDs, as: statusAction.action)
|
||||||
try? await syncDatabase.deleteSelectedForProcessing(Array(articleIDs))
|
try? await syncDatabase.deleteSelectedForProcessing(articleIDs)
|
||||||
} catch {
|
} catch {
|
||||||
try? await syncDatabase.resetSelectedForProcessing(Array(articleIDs))
|
try? await syncDatabase.resetSelectedForProcessing(articleIDs)
|
||||||
throw error
|
throw error
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -272,7 +272,7 @@ extension NewsBlurAccountDelegate {
|
|||||||
} catch {
|
} catch {
|
||||||
errorOccurred = true
|
errorOccurred = true
|
||||||
os_log(.error, log: self.log, "Story status sync call failed: %@.", error.localizedDescription)
|
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))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -693,10 +693,10 @@ private extension ReaderAPIAccountDelegate {
|
|||||||
|
|
||||||
do {
|
do {
|
||||||
let _ = try await apiCall(articleIDGroup)
|
let _ = try await apiCall(articleIDGroup)
|
||||||
try? await database.deleteSelectedForProcessing(articleIDGroup.map { $0 } )
|
try? await database.deleteSelectedForProcessing(Set(articleIDGroup))
|
||||||
} catch {
|
} catch {
|
||||||
os_log(.error, log: self.log, "Article status sync call failed: %@.", error.localizedDescription)
|
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))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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
|
// but the articles didn't come back in the fetch. We need to clean up those sync records
|
||||||
// and stop processing.
|
// and stop processing.
|
||||||
if statusUpdates.isEmpty {
|
if statusUpdates.isEmpty {
|
||||||
try? await self.database.deleteSelectedForProcessing(articleIDs)
|
try? await self.database.deleteSelectedForProcessing(Set(articleIDs))
|
||||||
done(true)
|
done(true)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -151,10 +151,10 @@ private extension CloudKitSendStatusOperation {
|
|||||||
Task { @MainActor in
|
Task { @MainActor in
|
||||||
switch result {
|
switch result {
|
||||||
case .success:
|
case .success:
|
||||||
try? await self.database.deleteSelectedForProcessing(statusUpdates.map({ $0.articleID }))
|
try? await self.database.deleteSelectedForProcessing(Set(statusUpdates.map({ $0.articleID })))
|
||||||
done(false)
|
done(false)
|
||||||
case .failure(let error):
|
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)
|
self.processAccountError(error)
|
||||||
os_log(.error, log: self.log, "Send article status modify articles error: %@.", error.localizedDescription)
|
os_log(.error, log: self.log, "Send article status modify articles error: %@.", error.localizedDescription)
|
||||||
completion(true)
|
completion(true)
|
||||||
@ -162,7 +162,7 @@ private extension CloudKitSendStatusOperation {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch {
|
} 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)
|
os_log(.error, log: self.log, "Send article status fetch articles error: %@.", error.localizedDescription)
|
||||||
completion(true)
|
completion(true)
|
||||||
}
|
}
|
||||||
|
@ -76,7 +76,7 @@ public actor SyncDatabase {
|
|||||||
syncStatusTable.resetAllSelectedForProcessing(database: database)
|
syncStatusTable.resetAllSelectedForProcessing(database: database)
|
||||||
}
|
}
|
||||||
|
|
||||||
public func resetSelectedForProcessing(_ articleIDs: [String]) throws {
|
public func resetSelectedForProcessing(_ articleIDs: Set<String>) throws {
|
||||||
|
|
||||||
guard let database else {
|
guard let database else {
|
||||||
throw DatabaseError.suspended
|
throw DatabaseError.suspended
|
||||||
@ -84,7 +84,7 @@ public actor SyncDatabase {
|
|||||||
syncStatusTable.resetSelectedForProcessing(articleIDs, database: database)
|
syncStatusTable.resetSelectedForProcessing(articleIDs, database: database)
|
||||||
}
|
}
|
||||||
|
|
||||||
public func deleteSelectedForProcessing(_ articleIDs: [String]) throws {
|
public func deleteSelectedForProcessing(_ articleIDs: Set<String>) throws {
|
||||||
|
|
||||||
guard let database else {
|
guard let database else {
|
||||||
throw DatabaseError.suspended
|
throw DatabaseError.suspended
|
||||||
|
@ -62,7 +62,7 @@ struct SyncStatusTable {
|
|||||||
database.executeUpdateInTransaction(updateSQL)
|
database.executeUpdateInTransaction(updateSQL)
|
||||||
}
|
}
|
||||||
|
|
||||||
func resetSelectedForProcessing(_ articleIDs: [String], database: FMDatabase) {
|
func resetSelectedForProcessing(_ articleIDs: Set<String>, database: FMDatabase) {
|
||||||
|
|
||||||
guard !articleIDs.isEmpty else {
|
guard !articleIDs.isEmpty else {
|
||||||
return
|
return
|
||||||
@ -75,7 +75,7 @@ struct SyncStatusTable {
|
|||||||
database.executeUpdateInTransaction(updateSQL, withArgumentsIn: parameters)
|
database.executeUpdateInTransaction(updateSQL, withArgumentsIn: parameters)
|
||||||
}
|
}
|
||||||
|
|
||||||
func deleteSelectedForProcessing(_ articleIDs: [String], database: FMDatabase) {
|
func deleteSelectedForProcessing(_ articleIDs: Set<String>, database: FMDatabase) {
|
||||||
|
|
||||||
guard !articleIDs.isEmpty else {
|
guard !articleIDs.isEmpty else {
|
||||||
return
|
return
|
||||||
|
Loading…
x
Reference in New Issue
Block a user