Signal-iOS/SignalServiceKit/src/Contacts/RecipientDataStore.swift
2023-03-23 14:00:52 -07:00

40 lines
1.7 KiB
Swift

//
// Copyright 2023 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
//
import Foundation
protocol RecipientDataStore {
func fetchRecipient(serviceId: ServiceId, transaction: DBReadTransaction) -> SignalRecipient?
func fetchRecipient(phoneNumber: String, transaction: DBReadTransaction) -> SignalRecipient?
func insertRecipient(_ signalRecipient: SignalRecipient, transaction: DBWriteTransaction)
func updateRecipient(_ signalRecipient: SignalRecipient, transaction: DBWriteTransaction)
func removeRecipient(_ signalRecipient: SignalRecipient, transaction: DBWriteTransaction)
}
class RecipientDataStoreImpl: RecipientDataStore {
func fetchRecipient(serviceId: ServiceId, transaction: DBReadTransaction) -> SignalRecipient? {
AnySignalRecipientFinder()
.signalRecipientForUUID(serviceId.uuidValue, transaction: SDSDB.shimOnlyBridge(transaction))
}
func fetchRecipient(phoneNumber: String, transaction: DBReadTransaction) -> SignalRecipient? {
AnySignalRecipientFinder()
.signalRecipientForPhoneNumber(phoneNumber, transaction: SDSDB.shimOnlyBridge(transaction))
}
func insertRecipient(_ signalRecipient: SignalRecipient, transaction: DBWriteTransaction) {
signalRecipient.anyInsert(transaction: SDSDB.shimOnlyBridge(transaction))
}
func updateRecipient(_ signalRecipient: SignalRecipient, transaction: DBWriteTransaction) {
signalRecipient.anyOverwritingUpdate(transaction: SDSDB.shimOnlyBridge(transaction))
}
func removeRecipient(_ signalRecipient: SignalRecipient, transaction: DBWriteTransaction) {
signalRecipient.anyRemove(transaction: SDSDB.shimOnlyBridge(transaction))
}
}