TM-SGNL-iOS/SignalServiceKit/Subscriptions/Donations/DonationReceiptFinder.swift
TeleMessage developers dde0620daf initial commit
2025-05-03 12:28:28 -07:00

45 lines
1.4 KiB
Swift

//
// Copyright 2022 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
//
import Foundation
import GRDB
public class DonationReceiptFinder {
public static func hasAny(transaction: SDSAnyReadTransaction) -> Bool {
let sql = """
SELECT EXISTS (
SELECT 1
FROM \(DonationReceipt.databaseTableName)
LIMIT 1
)
"""
do {
return try Bool.fetchOne(transaction.unwrapGrdbRead.database, sql: sql) ?? false
} catch {
DatabaseCorruptionState.flagDatabaseReadCorruptionIfNecessary(
userDefaults: CurrentAppContext().appUserDefaults(),
error: error
)
owsFail("Failed to find donation receipt")
}
}
public static func fetchAllInReverseDateOrder(transaction: SDSAnyReadTransaction) -> [DonationReceipt] {
let sql = """
SELECT *
FROM \(DonationReceipt.databaseTableName)
ORDER BY \(DonationReceipt.columnName(.timestamp)) DESC
"""
do {
return try DonationReceipt.fetchAll(transaction.unwrapGrdbRead.database, sql: sql)
} catch {
DatabaseCorruptionState.flagDatabaseReadCorruptionIfNecessary(
userDefaults: CurrentAppContext().appUserDefaults(),
error: error
)
owsFail("Failed to fetch donation receipts \(error)")
}
}
}