Merge branch 'charlesmchen/databaseViewsVsPerf'

pull/1/head
Matthew Chen 8 years ago
commit d8199a444f

@ -245,9 +245,23 @@ NS_ASSUME_NONNULL_BEGIN
- (TSInteraction *)lastInteractionForInbox - (TSInteraction *)lastInteractionForInbox
{ {
__block TSInteraction *last; __block TSInteraction *last = nil;
[TSStorageManager.sharedManager.dbConnection readWithBlock:^(YapDatabaseReadTransaction *transaction) { [TSStorageManager.sharedManager.dbConnection readWithBlock:^(YapDatabaseReadTransaction *transaction) {
last = [[transaction ext:TSThreadInboxMessagesDatabaseViewExtensionName] lastObjectInGroup:self.uniqueId]; [[transaction ext:TSMessageDatabaseViewExtensionName]
enumerateRowsInGroup:self.uniqueId
withOptions:NSEnumerationReverse
usingBlock:^(
NSString *collection, NSString *key, id object, id metadata, NSUInteger index, BOOL *stop) {
OWSAssert([object isKindOfClass:[TSInteraction class]]);
TSInteraction *interaction = (TSInteraction *)object;
if ([TSThread shouldInteractionAppearInInbox:interaction]) {
last = interaction;
*stop = YES;
}
}];
}]; }];
return last; return last;
} }

@ -14,7 +14,6 @@ extern NSString *TSSecondaryDevicesGroup;
extern NSString *TSThreadDatabaseViewExtensionName; extern NSString *TSThreadDatabaseViewExtensionName;
extern NSString *TSMessageDatabaseViewExtensionName; extern NSString *TSMessageDatabaseViewExtensionName;
extern NSString *TSThreadInboxMessagesDatabaseViewExtensionName;
extern NSString *TSThreadIncomingMessageDatabaseViewExtensionName; extern NSString *TSThreadIncomingMessageDatabaseViewExtensionName;
extern NSString *TSThreadOutgoingMessageDatabaseViewExtensionName; extern NSString *TSThreadOutgoingMessageDatabaseViewExtensionName;
extern NSString *TSUnreadDatabaseViewExtensionName; extern NSString *TSUnreadDatabaseViewExtensionName;
@ -25,7 +24,6 @@ extern NSString *TSSecondaryDevicesDatabaseViewExtensionName;
+ (BOOL)registerThreadDatabaseView; + (BOOL)registerThreadDatabaseView;
+ (BOOL)registerThreadInteractionsDatabaseView; + (BOOL)registerThreadInteractionsDatabaseView;
+ (BOOL)registerThreadInboxMessageDatabaseView;
+ (BOOL)registerThreadIncomingMessagesDatabaseView; + (BOOL)registerThreadIncomingMessagesDatabaseView;
+ (BOOL)registerThreadOutgoingMessagesDatabaseView; + (BOOL)registerThreadOutgoingMessagesDatabaseView;

@ -20,7 +20,6 @@ NSString *TSSecondaryDevicesGroup = @"TSSecondaryDevicesGroup";
NSString *TSThreadDatabaseViewExtensionName = @"TSThreadDatabaseViewExtensionName"; NSString *TSThreadDatabaseViewExtensionName = @"TSThreadDatabaseViewExtensionName";
NSString *TSMessageDatabaseViewExtensionName = @"TSMessageDatabaseViewExtensionName"; NSString *TSMessageDatabaseViewExtensionName = @"TSMessageDatabaseViewExtensionName";
NSString *TSThreadInboxMessagesDatabaseViewExtensionName = @"TSThreadInboxMessagesDatabaseViewExtensionName";
NSString *TSThreadIncomingMessageDatabaseViewExtensionName = @"TSThreadOutgoingMessageDatabaseViewExtensionName"; NSString *TSThreadIncomingMessageDatabaseViewExtensionName = @"TSThreadOutgoingMessageDatabaseViewExtensionName";
NSString *TSThreadOutgoingMessageDatabaseViewExtensionName = @"TSThreadOutgoingMessageDatabaseViewExtensionName"; NSString *TSThreadOutgoingMessageDatabaseViewExtensionName = @"TSThreadOutgoingMessageDatabaseViewExtensionName";
NSString *TSUnreadDatabaseViewExtensionName = @"TSUnreadDatabaseViewExtensionName"; NSString *TSUnreadDatabaseViewExtensionName = @"TSUnreadDatabaseViewExtensionName";
@ -148,27 +147,6 @@ NSString *TSSecondaryDevicesDatabaseViewExtensionName = @"TSSecondaryDevicesData
version:@"1"]; version:@"1"];
} }
+ (BOOL)registerThreadInboxMessageDatabaseView
{
YapDatabaseViewGrouping *viewGrouping = [YapDatabaseViewGrouping withObjectBlock:^NSString *(
YapDatabaseReadTransaction *transaction, NSString *collection, NSString *key, id object) {
if ([object isKindOfClass:[TSInteraction class]]) {
TSInteraction *interaction = (TSInteraction *)object;
if (![TSThread shouldInteractionAppearInInbox:interaction]) {
return nil;
}
return interaction.uniqueThreadId;
} else {
OWSAssert(0);
}
return nil;
}];
return [self registerMessageDatabaseViewWithName:TSThreadInboxMessagesDatabaseViewExtensionName
viewGrouping:viewGrouping
version:@"1"];
}
+ (BOOL)registerThreadIncomingMessagesDatabaseView + (BOOL)registerThreadIncomingMessagesDatabaseView
{ {
YapDatabaseViewGrouping *viewGrouping = [YapDatabaseViewGrouping withObjectBlock:^NSString *( YapDatabaseViewGrouping *viewGrouping = [YapDatabaseViewGrouping withObjectBlock:^NSString *(

@ -193,10 +193,9 @@ static NSString *keychainDBPassAccount = @"TSDatabasePass";
- (void)setupDatabase - (void)setupDatabase
{ {
// Register extensions which are essential for rendering threads synchronously // Synchronously register extensions which are essential for views.
[TSDatabaseView registerThreadDatabaseView]; [TSDatabaseView registerThreadDatabaseView];
[TSDatabaseView registerThreadInteractionsDatabaseView]; [TSDatabaseView registerThreadInteractionsDatabaseView];
[TSDatabaseView registerThreadInboxMessageDatabaseView];
[TSDatabaseView registerThreadIncomingMessagesDatabaseView]; [TSDatabaseView registerThreadIncomingMessagesDatabaseView];
[TSDatabaseView registerThreadOutgoingMessagesDatabaseView]; [TSDatabaseView registerThreadOutgoingMessagesDatabaseView];
[TSDatabaseView registerUnreadDatabaseView]; [TSDatabaseView registerUnreadDatabaseView];

Loading…
Cancel
Save