// // Copyright (c) 2017 Open Whisper Systems. All rights reserved. // #import "OWS105AttachmentFilePaths.h" #import #import NS_ASSUME_NONNULL_BEGIN // Increment a similar constant for every future DBMigration static NSString *const OWS105AttachmentFilePathsMigrationId = @"105"; @implementation OWS105AttachmentFilePaths + (NSString *)migrationId { return OWS105AttachmentFilePathsMigrationId; } - (void)runUpWithTransaction:(YapDatabaseReadWriteTransaction *)transaction { OWSAssert(transaction); NSMutableArray *attachmentStreams = [NSMutableArray new]; [transaction enumerateKeysAndObjectsInCollection:TSAttachmentStream.collection usingBlock:^(NSString *key, TSAttachment *attachment, BOOL *stop) { if (![attachment isKindOfClass:[TSAttachmentStream class]]) { return; } TSAttachmentStream *attachmentStream = (TSAttachmentStream *)attachment; [attachmentStreams addObject:attachmentStream]; }]; DDLogInfo(@"Saving %zd attachment streams.", attachmentStreams.count); // Persist the new localRelativeFilePath property of TSAttachmentStream. // For performance, we want to upgrade all existing attachment streams in // a single transaction. for (TSAttachmentStream *attachmentStream in attachmentStreams) { [attachmentStream saveWithTransaction:transaction]; } } @end NS_ASSUME_NONNULL_END