Resolve Prolonged Type Checking (#1338)

Co-authored-by: chickdan <=>
This commit is contained in:
Daniel Chick 2024-12-05 13:39:03 -06:00 committed by GitHub
parent 2ac9283dfa
commit 95c4395c11
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 20 additions and 4 deletions

View File

@ -94,8 +94,12 @@ extension StoredValue {
let domain = key.domain ?? "none"
let ownerFilter: Where<AnyStoredData> = Where(\.$ownerID == key.ownerID)
let keyFilter: Where<AnyStoredData> = Where(\.$key == key.name)
let domainFilter: Where<AnyStoredData> = Where(\.$domain == domain)
let clause = From<AnyStoredData>()
.where(\.$ownerID == key.ownerID && \.$key == key.name && \.$domain == domain)
.where(ownerFilter && keyFilter && domainFilter)
if let values = try? SwiftfinStore.dataStack.fetchAll(clause), let first = values.first {
let publisher = first.asPublisher(in: SwiftfinStore.dataStack)

View File

@ -56,8 +56,12 @@ extension AnyStoredData {
let domain = domain ?? "none"
let ownerFilter: Where<AnyStoredData> = Where(\.$ownerID == ownerID)
let keyFilter: Where<AnyStoredData> = Where(\.$key == key)
let domainFilter: Where<AnyStoredData> = Where(\.$domain == domain)
let clause = From<AnyStoredData>()
.where(\.$ownerID == ownerID && \.$key == key && \.$domain == domain)
.where(ownerFilter && keyFilter && domainFilter)
let values = try SwiftfinStore.dataStack
.fetchAll(
@ -78,8 +82,12 @@ extension AnyStoredData {
let domain = domain ?? "none"
let ownerFilter: Where<AnyStoredData> = Where(\.$ownerID == ownerID)
let keyFilter: Where<AnyStoredData> = Where(\.$key == key)
let domainFilter: Where<AnyStoredData> = Where(\.$domain == domain)
let clause = From<AnyStoredData>()
.where(\.$ownerID == ownerID && \.$key == key && \.$domain == domain)
.where(ownerFilter && keyFilter && domainFilter)
try SwiftfinStore.dataStack.perform { transaction in
let existing = try transaction.fetchAll(clause)
@ -124,8 +132,12 @@ extension AnyStoredData {
static func fetchClause(key: String, ownerID: String, domain: String? = nil) throws -> FetchChainBuilder<AnyStoredData> {
let domain = domain ?? "none"
let ownerFilter: Where<AnyStoredData> = Where(\.$ownerID == ownerID)
let keyFilter: Where<AnyStoredData> = Where(\.$key == key)
let domainFilter: Where<AnyStoredData> = Where(\.$domain == domain)
return From<AnyStoredData>()
.where(\.$ownerID == ownerID && \.$key == key && \.$domain == domain)
.where(ownerFilter && keyFilter && domainFilter)
}
/// Delete all data with the given `ownerID`