Signal-iOS/SignalServiceKit/Storage/TSYapDatabaseObject.h
Ehren Kret cd5b4c2b6a fix warning
This is a convenience initializer not a designated initializer
2024-04-20 13:35:00 -05:00

81 lines
2.3 KiB
Objective-C

//
// Copyright 2017 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
//
#import <Mantle/MTLModel+NSCoding.h>
NS_ASSUME_NONNULL_BEGIN
@class SDSAnyWriteTransaction;
@class SDSDatabaseStorage;
@protocol SDSRecordDelegate
- (void)updateRowId:(int64_t)rowId;
@end
#pragma mark -
// TODO: Rename and/or merge with BaseModel.
@interface TSYapDatabaseObject : MTLModel <SDSRecordDelegate>
/**
* The unique identifier of the stored object
*/
@property (nonatomic, readonly) NSString *uniqueId;
// This property should only ever be accesssed within a GRDB write transaction.
@property (atomic, readonly, nullable) NSNumber *grdbId;
- (instancetype)init;
/**
* Initializes a new database object with a unique identifier
*
* @param uniqueId Key used for the key-value store
*
* @return Initialized object
*/
- (instancetype)initWithUniqueId:(NSString *)uniqueId NS_DESIGNATED_INITIALIZER;
- (instancetype)initWithGrdbId:(int64_t)grdbId uniqueId:(NSString *)uniqueId NS_DESIGNATED_INITIALIZER;
- (nullable instancetype)initWithCoder:(NSCoder *)coder NS_DESIGNATED_INITIALIZER;
/**
* Returns the collection to which the object belongs.
*
* @return Key (string) identifying the collection
*/
+ (NSString *)collection;
// These methods should only ever be called within a GRDB write transaction.
- (void)clearRowId;
// This method is used to facilitate a database object replacement. See:
// OWSRecoverableDecryptionPlaceholder.
- (void)replaceRowId:(int64_t)rowId uniqueId:(NSString *)uniqueId;
@property (nonatomic, readonly) NSString *transactionFinalizationKey;
#pragma mark -
// GRDB TODO: As a perf optimization, we could only call these
// methods for certain kinds of models which we could
// detect at compile time.
@property (nonatomic, readonly) BOOL shouldBeSaved;
#pragma mark - Data Store Write Hooks
- (void)anyWillInsertWithTransaction:(SDSAnyWriteTransaction *)transaction;
- (void)anyDidInsertWithTransaction:(SDSAnyWriteTransaction *)transaction;
- (void)anyWillUpdateWithTransaction:(SDSAnyWriteTransaction *)transaction;
- (void)anyDidUpdateWithTransaction:(SDSAnyWriteTransaction *)transaction;
- (void)anyWillRemoveWithTransaction:(SDSAnyWriteTransaction *)transaction;
- (void)anyDidRemoveWithTransaction:(SDSAnyWriteTransaction *)transaction;
@end
NS_ASSUME_NONNULL_END