extension Storage {

    private static let sessionRequestSentTimestampCollection = "LokiSessionRequestSentTimestampCollection"
    private static let sessionRequestProcessedTimestampCollection = "LokiSessionRequestProcessedTimestampCollection"

    public func getSessionRequestSentTimestamp(for publicKey: String) -> UInt64 {
        var result: UInt64?
        Storage.read { transaction in
            result = transaction.object(forKey: publicKey, inCollection: Storage.sessionRequestSentTimestampCollection) as? UInt64
        }
        return result ?? 0
    }

    public func setSessionRequestSentTimestamp(for publicKey: String, to timestamp: UInt64, using transaction: Any) {
        (transaction as! YapDatabaseReadWriteTransaction).setObject(timestamp, forKey: publicKey, inCollection: Storage.sessionRequestSentTimestampCollection)
    }

    public func getSessionRequestProcessedTimestamp(for publicKey: String) -> UInt64 {
        var result: UInt64?
        Storage.read { transaction in
            result = transaction.object(forKey: publicKey, inCollection: Storage.sessionRequestProcessedTimestampCollection) as? UInt64
        }
        return result ?? 0
    }

    public func setSessionRequestProcessedTimestamp(for publicKey: String, to timestamp: UInt64, using transaction: Any) {
        (transaction as! YapDatabaseReadWriteTransaction).setObject(timestamp, forKey: publicKey, inCollection: Storage.sessionRequestProcessedTimestampCollection)
    }
}