// // BDQuestionModule.m // jiaPei // // Created by 张嵘 on 2022/7/28. // Copyright © 2022 JCZ. All rights reserved. // #import "BDQuestionModule.h" static NSString *dbNameStr = @"question"; static NSString *dbTypeStr = @"db"; static NSString *questionTableNameStr = @"t_question"; @interface BDQuestionModule () @property (nonatomic, readwrite, strong) FMDatabaseQueue *databaseQueue; @end @implementation BDQuestionModule static id rq_BDQuestionModule = nil; #pragma mark - init + (instancetype)sharedInstance { static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ rq_BDQuestionModule = [[self alloc] init]; }); return rq_BDQuestionModule; } - (instancetype)init { if (self = [super init]) { NSError *error; NSString *dbPath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject] stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.%@",dbNameStr,dbTypeStr]]; NSString *resourcePath = [[NSBundle mainBundle] pathForResource:dbNameStr ofType:dbTypeStr]; if ([RQFileManager isPathExist:dbPath]) { self.databaseQueue = [FMDatabaseQueue databaseQueueWithPath:dbPath]; NSLog(@"数据库path-----%@",dbPath); if ([self getQuestionVersion] >= [self getQuestionVersionWithResourcePath:resourcePath]) { } else { [[RQFileManager fileManager] removeItemAtPath:dbPath error:&error]; [[RQFileManager fileManager] copyItemAtPath:resourcePath toPath:[[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject] stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.%@",dbNameStr,dbTypeStr]] error:&error]; self.databaseQueue = [FMDatabaseQueue databaseQueueWithPath:dbPath]; } } else { [[RQFileManager fileManager] copyItemAtPath:resourcePath toPath:[[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject] stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.%@",dbNameStr,dbTypeStr]] error:&error]; self.databaseQueue = [FMDatabaseQueue databaseQueueWithPath:dbPath]; NSLog(@"数据库path-----%@",dbPath); } } return self; } #pragma mark - PublicMethods - (NSInteger)getQuestionVersion { __block NSInteger version = 0; if (_databaseQueue) { [_databaseQueue inDatabase:^(FMDatabase * _Nonnull db) { FMResultSet *resultSet; resultSet = [db executeQuery:@"SELECT version FROM t_version"]; while ([resultSet next]) { version = [resultSet longForColumn:@"version"]; } }]; } return version; } - (NSInteger)getQuestionVersionWithResourcePath:(NSString *)resourcePath { __block NSInteger version = 0; [[FMDatabaseQueue databaseQueueWithPath:resourcePath] inDatabase:^(FMDatabase * _Nonnull db) { FMResultSet *resultSet; resultSet = [db executeQuery:@"SELECT version FROM t_version"]; while ([resultSet next]) { version = [resultSet longForColumn:@"version"]; } }]; return version; } - (NSArray *)queryQuestionWithQueryStr:(NSString *)queryStr { NSMutableArray *arr = @[].mutableCopy; [_databaseQueue inDatabase:^(FMDatabase * _Nonnull db) { // NSString *sqlStr = [NSString stringWithFormat:@"ATTACH DATABASE '%@' AS jsjp_user_db",RQ_YDT_USER_Question_Module.dbPath]; // bool success = [db executeStatements:sqlStr]; // if(!success) { // NSLog(@"%@", db.lastErrorMessage); // } FMResultSet *resultSet = [db executeQuery:queryStr]; // NSInteger num = 0; while ([resultSet next]) { RQBDQuestionModel *bdQuestionModel = [RQBDQuestionModel bdQuestionModelWithFMResultSet:resultSet]; // ydtQuestionModel.num = num; [arr addObject:bdQuestionModel]; // num ++; } [resultSet close]; }]; return arr.copy; } @end