diff --git a/Shared/SwiftfinStore/StoredValue/StoredValue.swift b/Shared/SwiftfinStore/StoredValue/StoredValue.swift index 364c8da0..5438c7ee 100644 --- a/Shared/SwiftfinStore/StoredValue/StoredValue.swift +++ b/Shared/SwiftfinStore/StoredValue/StoredValue.swift @@ -94,8 +94,12 @@ extension StoredValue { let domain = key.domain ?? "none" + let ownerFilter: Where = Where(\.$ownerID == key.ownerID) + let keyFilter: Where = Where(\.$key == key.name) + let domainFilter: Where = Where(\.$domain == domain) + let clause = From() - .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) diff --git a/Shared/SwiftfinStore/V2Schema/V2AnyData.swift b/Shared/SwiftfinStore/V2Schema/V2AnyData.swift index 6a70e936..c31142f0 100644 --- a/Shared/SwiftfinStore/V2Schema/V2AnyData.swift +++ b/Shared/SwiftfinStore/V2Schema/V2AnyData.swift @@ -56,8 +56,12 @@ extension AnyStoredData { let domain = domain ?? "none" + let ownerFilter: Where = Where(\.$ownerID == ownerID) + let keyFilter: Where = Where(\.$key == key) + let domainFilter: Where = Where(\.$domain == domain) + let clause = From() - .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 = Where(\.$ownerID == ownerID) + let keyFilter: Where = Where(\.$key == key) + let domainFilter: Where = Where(\.$domain == domain) + let clause = From() - .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 { let domain = domain ?? "none" + let ownerFilter: Where = Where(\.$ownerID == ownerID) + let keyFilter: Where = Where(\.$key == key) + let domainFilter: Where = Where(\.$domain == domain) + return From() - .where(\.$ownerID == ownerID && \.$key == key && \.$domain == domain) + .where(ownerFilter && keyFilter && domainFilter) } /// Delete all data with the given `ownerID`