1// Copyright 2020-present 650 Industries. All rights reserved. 2 3#import "EXUpdatesDatabaseManager.h" 4#import <EXUpdates/EXUpdatesUtils.h> 5 6@import EXUpdates; 7 8NS_ASSUME_NONNULL_BEGIN 9 10@interface EXUpdatesDatabaseManager () 11 12@property (nonatomic, strong) NSURL *updatesDirectory; 13@property (nonatomic, strong) EXUpdatesDatabase *database; 14@property (nonatomic, assign) BOOL isDatabaseOpen; 15@property (nonatomic, strong, nullable) NSError *error; 16 17@end 18 19@implementation EXUpdatesDatabaseManager 20 21- (instancetype)init 22{ 23 if (self = [super init]) { 24 _database = [[EXUpdatesDatabase alloc] init]; 25 _isDatabaseOpen = NO; 26 } 27 return self; 28} 29 30- (NSURL *)updatesDirectory 31{ 32 if (!_updatesDirectory) { 33 NSError *fsError; 34 _updatesDirectory = [EXUpdatesUtils initializeUpdatesDirectoryWithError:&fsError]; 35 if (fsError) { 36 _error = fsError; 37 } 38 } 39 return _updatesDirectory; 40} 41 42- (BOOL)openDatabase 43{ 44 if (!self.updatesDirectory) { 45 return NO; 46 } 47 48 __block BOOL success = NO; 49 __block NSError *dbError; 50 dispatch_sync(self.database.databaseQueue, ^{ 51 success = [self.database openDatabaseInDirectory:self.updatesDirectory error:&dbError]; 52 }); 53 54 if (dbError) { 55 _error = dbError; 56 } 57 _isDatabaseOpen = success; 58 59 return success; 60} 61 62@end 63 64NS_ASSUME_NONNULL_END 65