Skip to content

Commit 564db88

Browse files
committed
v1.3
1 parent 1add97e commit 564db88

18 files changed

+266
-203
lines changed

.DS_Store

0 Bytes
Binary file not shown.

Paintinglite/Paintinglite/AppDelegate.m

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,22 @@
77
//
88

99
#import "AppDelegate.h"
10+
#import "Paintinglite/PaintingliteCache.h"
1011

1112
@interface AppDelegate ()
12-
13+
@property (nonatomic,strong)PaintingliteCache *cache; //缓存机制
1314
@end
1415

1516
@implementation AppDelegate
1617

18+
#pragma mark - 懒加载
19+
- (PaintingliteCache *)cache{
20+
if (!_cache) {
21+
_cache = [PaintingliteCache sharePaintingliteCache];
22+
}
23+
24+
return _cache;
25+
}
1726

1827
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
1928
// Override point for customization after application launch.
@@ -30,6 +39,9 @@ - (void)applicationWillResignActive:(UIApplication *)application {
3039
- (void)applicationDidEnterBackground:(UIApplication *)application {
3140
// Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
3241
// If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
42+
43+
//程序进入后台,写入剩余缓存到日志文件
44+
[self.cache pushCacheToLogFile];
3345
}
3446

3547

Paintinglite/Paintinglite/Paintinglite/PaintingliteCUDOptions.m

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -85,26 +85,20 @@ - (Boolean)insert:(sqlite3 *)ppDb sql:(NSString *)sql{
8585

8686
#pragma mark - 基本操作
8787
- (Boolean)baseCUD:(sqlite3 *)ppDb sql:(NSString *)sql CUDHandler:(NSString * (^)(void))CUDHandler completeHandler:(void (^)(PaintingliteSessionError * _Nonnull, Boolean))completeHandler{
88-
__block Boolean success = false;
88+
Boolean success = false;
8989

9090
//执行的CUD_Block操作
91-
__block NSString *tableName = [NSString string];
92-
93-
dispatch_queue_t queue = dispatch_queue_create([@"com.Paintinglite.Queue" UTF8String], DISPATCH_QUEUE_CONCURRENT);
94-
95-
dispatch_barrier_async(queue, ^{
96-
if (CUDHandler != nil) tableName = CUDHandler();
97-
});
91+
NSString *tableName = [NSString string];
9892

93+
if (CUDHandler != nil) tableName = CUDHandler();
94+
9995
//判断表是否存在,判断表的字段
10096
if (![[self.exec getCurrentTableNameWithCache] containsObject:tableName]){
10197
[PaintingliteException PaintingliteException:@"表名不存在" reason:@"数据库找不到表名,无法执行操作"];
10298
}
10399

104100
//执行语句
105-
@autoreleasepool {
106-
success = [self.exec sqlite3Exec:ppDb sql:sql];
107-
}
101+
success = [self.exec sqlite3Exec:ppDb sql:sql];
108102

109103
if (completeHandler != nil) {
110104
completeHandler(self.sessionError,success);
@@ -133,7 +127,7 @@ - (Boolean)insert:(sqlite3 *)ppDb obj:(id)obj completeHandler:(void (^)(Painting
133127
[self.exec isNotExistsTable:tableName];
134128

135129
//获取表的字段,寻找对应的对象字段
136-
NSMutableArray *tableInfoArray = [self.exec getTableInfo:ppDb objName:tableName];
130+
NSMutableArray *tableInfoArray = [self.exec getTableInfo:ppDb tableName:tableName];
137131

138132
NSString *sql = [NSString stringWithFormat:@"INSERT INTO %@(",tableName];
139133

@@ -212,7 +206,7 @@ - (Boolean)update:(sqlite3 *)ppDb obj:(id)obj condition:(NSString * _Nonnull)con
212206
}];
213207

214208
//获取表的字段,寻找对应的对象字段
215-
NSMutableArray *tableInfoArray = [self.exec getTableInfo:ppDb objName:tableName];
209+
NSMutableArray *tableInfoArray = [self.exec getTableInfo:ppDb tableName:tableName];
216210
//获得对应字段的对象的值
217211
NSMutableDictionary *propertyValue = [PaintingliteObjRuntimeProperty getObjPropertyValue:obj];
218212

Paintinglite/Paintinglite/Paintinglite/PaintingliteCache.h

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
*/
1515

1616
#import <Foundation/Foundation.h>
17+
#import <UIKit/UIKit.h>
1718

1819
NS_ASSUME_NONNULL_BEGIN
1920

@@ -29,14 +30,14 @@ NS_ASSUME_NONNULL_BEGIN
2930
/* 添加表名称缓存 */
3031
- (void)addSnapTableNameCache:(NSString *__nonnull)tableName;
3132

32-
/* 获得表名称缓存 */
33-
- (NSString *)getSnapTableNameCache:(NSString *__nonnull)cacheKey;
33+
/* 添加表结构缓存 */
34+
- (void)addSnapTableInfoNameCache:(NSArray *__nonnull)infoArray tableName:(NSString *__nonnull)tableName;
3435

3536
/* 添加数据库操作缓存 */
3637
- (void)addDatabaseOptionsCache:(NSString *__nonnull)optStr;
3738

38-
/* 获得数据库操作缓存 */
39-
- (NSString *)getDatabaseOptionsCache:(NSString *__nonnull)cacheKey;
39+
/* 缓存写入日志文件 */
40+
- (void)pushCacheToLogFile;
4041

4142
@end
4243

Paintinglite/Paintinglite/Paintinglite/PaintingliteCache.m

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -46,16 +46,18 @@ - (instancetype)init
4646
}
4747

4848
#pragma mark - 添加表名称缓存
49-
static int tableCount = 0;
5049
- (void)addSnapTableNameCache:(NSString *__nonnull)tableName{
51-
[self setObject:tableName forKey:[NSString stringWithFormat:@"snap_tableName_%d",tableCount]];
50+
NSUInteger tableCount = self.tableCount;
51+
52+
[self setObject:tableName forKey:[NSString stringWithFormat:@"snap_tableName_%zd",tableCount]];
53+
5254
tableCount++;
5355
self.tableCount = tableCount;
5456
}
5557

56-
#pragma mark - 获得表名称缓存
57-
- (NSString *)getSnapTableNameCache:(NSString *__nonnull)cacheKey{
58-
return [self objectForKey:cacheKey];
58+
#pragma mark - 添加表结构缓存
59+
- (void)addSnapTableInfoNameCache:(NSArray *)infoArray tableName:(NSString *)tableName{
60+
[self setObject:infoArray forKey:[NSString stringWithFormat:@"snap_%@_info",tableName]];
5961
}
6062

6163
#pragma mark - 添加数据库操作缓存
@@ -65,9 +67,10 @@ - (void)addDatabaseOptionsCache:(NSString *)optStr{
6567
count++;
6668
self.optCount = count;
6769

68-
self.baseReleaseLine = 10;
69-
self.limitedCacheCount = 30;
70-
70+
/* 缓存池上限 */
71+
(self.limitedCacheCount < 30) ? self.limitedCacheCount = 30 : self.limitedCacheCount;
72+
(self.baseReleaseLine <= 0 || self.baseReleaseLine >= self.limitedCacheCount) ? self.baseReleaseLine = 10 : self.baseReleaseLine;
73+
7174
[self setObject:optStr forKey:[NSString stringWithFormat:@"database_opt_%d",count]];
7275

7376
if(count >= self.baseReleaseLine){
@@ -84,7 +87,7 @@ - (void)writeLogFile{
8487
@autoreleasepool {
8588
/* 获得语句当前执行状态 */
8689
NSString *cacheKey = [NSString stringWithFormat:@"database_opt_%zd",i];
87-
NSString *optAndStatus = [self getDatabaseOptionsCache:cacheKey];
90+
NSString *optAndStatus = (NSString *)[self objectForKey:cacheKey];
8891
/* 分隔符 | */
8992
NSArray<NSString *> *strArray = [optAndStatus componentsSeparatedByString:@" | "];
9093
[self writeLogFileOptions:[strArray firstObject] status:([[strArray lastObject] isEqualToString:@"success"]) ? PaintingliteLogSuccess : PaintingliteLogError];
@@ -95,15 +98,15 @@ - (void)writeLogFile{
9598
}
9699
}
97100

101+
#pragma mark - 缓存写入日志文件
102+
- (void)pushCacheToLogFile{
103+
[self writeLogFile];
104+
}
105+
98106
#pragma mark - 写日志
99107
- (void)writeLogFileOptions:(NSString *__nonnull)sql status:(PaintingliteLogStatus)status{
100108
[self.log writeLogFileOptions:sql status:status completeHandler:nil];
101109
self.log = nil;
102110
}
103111

104-
#pragma mark - 获得数据库操作缓存
105-
- (NSString *)getDatabaseOptionsCache:(NSString *)cacheKey{
106-
return [self objectForKey:cacheKey];
107-
}
108-
109112
@end

Paintinglite/Paintinglite/Paintinglite/PaintingliteDataBaseOptions.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
#import "PaintingliteSessionError.h"
1919
#import <Sqlite3.h>
2020

21-
typedef NS_ENUM(NSUInteger, PaintingliteDataBaseOptionsCreateStyle) {
21+
typedef NS_ENUM(NSUInteger, PaintingliteDataBaseOptionsPrimaryKeyStyle) {
2222
PaintingliteDataBaseOptionsDefault, //默认不带主键
2323
PaintingliteDataBaseOptionsUUID, //用UUID做主键
2424
PaintingliteDataBaseOptionsID //用ID做主键
@@ -38,8 +38,8 @@ NS_ASSUME_NONNULL_BEGIN
3838
/* 创建表 */
3939
- (Boolean)createTableForName:(sqlite3 *)ppDb tableName:(NSString *)tableName content:(NSString *)content;
4040
- (Boolean)createTableForName:(sqlite3 *)ppDb tableName:(NSString *)tableName content:(NSString *)content completeHandler:(void(^ __nullable)(PaintingliteSessionError *error,Boolean success))completeHandler;
41-
- (Boolean)createTableForObj:(sqlite3 *)ppDb obj:(id)obj createStyle:(PaintingliteDataBaseOptionsCreateStyle)createStyle;
42-
- (Boolean)createTableForObj:(sqlite3 *)ppDb obj:(id)obj createStyle:(PaintingliteDataBaseOptionsCreateStyle)createStyle completeHandler:(void(^ __nullable)(PaintingliteSessionError *error,Boolean success))completeHandler;
41+
- (Boolean)createTableForObj:(sqlite3 *)ppDb obj:(id)obj createStyle:(PaintingliteDataBaseOptionsPrimaryKeyStyle)createStyle;
42+
- (Boolean)createTableForObj:(sqlite3 *)ppDb obj:(id)obj createStyle:(PaintingliteDataBaseOptionsPrimaryKeyStyle)createStyle completeHandler:(void(^ __nullable)(PaintingliteSessionError *error,Boolean success))completeHandler;
4343

4444
/* 更新表 */
4545
- (BOOL)alterTableForName:(sqlite3 *)ppDb oldName:(NSString *__nonnull)oldName newName:(NSString *__nonnull)newName;

Paintinglite/Paintinglite/Paintinglite/PaintingliteDataBaseOptions.m

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -82,11 +82,11 @@ - (Boolean)createTableForName:(sqlite3 *)ppDb tableName:(NSString *)tableName co
8282
}
8383

8484
/* Obj创建 */
85-
- (Boolean)createTableForObj:(sqlite3 *)ppDb obj:(id)obj createStyle:(PaintingliteDataBaseOptionsCreateStyle)createStyle{
85+
- (Boolean)createTableForObj:(sqlite3 *)ppDb obj:(id)obj createStyle:(PaintingliteDataBaseOptionsPrimaryKeyStyle)createStyle{
8686
return [self createTableForObj:ppDb obj:obj createStyle:createStyle completeHandler:nil];
8787
}
8888

89-
- (Boolean)createTableForObj:(sqlite3 *)ppDb obj:(id)obj createStyle:(PaintingliteDataBaseOptionsCreateStyle)createStyle completeHandler:(void (^)(PaintingliteSessionError * _Nonnull, Boolean))completeHandler{
89+
- (Boolean)createTableForObj:(sqlite3 *)ppDb obj:(id)obj createStyle:(PaintingliteDataBaseOptionsPrimaryKeyStyle)createStyle completeHandler:(void (^)(PaintingliteSessionError * _Nonnull, Boolean))completeHandler{
9090

9191
Boolean success = [self.exec sqlite3Exec:ppDb obj:obj status:PaintingliteExecCreate createStyle:createStyle];
9292

@@ -115,9 +115,7 @@ - (BOOL)alterTableForName:(sqlite3 *)ppDb oldName:(NSString *__nonnull)oldName n
115115
}
116116

117117
- (BOOL)alterTableAddColumn:(sqlite3 *)ppDb tableName:(NSString *)tableName columnName:(NSString *)columnName columnType:(NSString *)columnType{
118-
return [self alterTableAddColumn:ppDb tableName:tableName columnName:columnName columnType:columnType completeHandler:^(PaintingliteSessionError * _Nonnull error, Boolean success) {
119-
;
120-
}];
118+
return [self alterTableAddColumn:ppDb tableName:tableName columnName:columnName columnType:columnType completeHandler:nil];
121119
}
122120

123121
- (BOOL)alterTableAddColumn:(sqlite3 *)ppDb tableName:(NSString *)tableName columnName:(NSString *)columnName columnType:(NSString *)columnType completeHandler:(void (^)(PaintingliteSessionError * _Nonnull, Boolean))completeHandler{
@@ -131,15 +129,11 @@ - (BOOL)alterTableAddColumn:(sqlite3 *)ppDb tableName:(NSString *)tableName colu
131129
}
132130

133131
- (BOOL)alterTableForObj:(sqlite3 *)ppDb obj:(id)obj columnName:(NSString *__nonnull)columnName columnType:(NSString *__nonnull)columnType{
134-
return [self alterTableForObj:ppDb obj:obj completeHandler:^(PaintingliteSessionError * _Nonnull error, Boolean success) {
135-
;
136-
}];
132+
return [self alterTableForObj:ppDb obj:obj completeHandler:nil];
137133
}
138134

139135
- (BOOL)alterTableForObj:(sqlite3 *)ppDb obj:(id)obj{
140-
return [self alterTableForObj:ppDb obj:obj completeHandler:^(PaintingliteSessionError * _Nonnull error, Boolean success) {
141-
;
142-
}];
136+
return [self alterTableForObj:ppDb obj:obj completeHandler:nil];
143137
}
144138

145139
- (BOOL)alterTableForObj:(sqlite3 *)ppDb obj:(id)obj completeHandler:(void (^)(PaintingliteSessionError * _Nonnull, Boolean))completeHandler{

Paintinglite/Paintinglite/Paintinglite/PaintingliteException.m

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ @implementation PaintingliteException
1212

1313
#pragma mark - 抛出异常
1414
+ (void)PaintingliteException:(NSString *)exceptionWithName reason:(NSString *)reason{
15-
return ;
15+
NSLog(@"exceptionWithName: %@ reason: %@",exceptionWithName,reason);
1616
}
1717

1818
@end

Paintinglite/Paintinglite/Paintinglite/PaintingliteExec.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ NS_ASSUME_NONNULL_BEGIN
4343

4444
- (Boolean)sqlite3Exec:(sqlite3 *)ppDb tableName:(NSString *)tableName;
4545

46-
- (Boolean)sqlite3Exec:(sqlite3 *)ppDb obj:(id)obj status:(PaintingliteExecStatus)status createStyle:(PaintingliteDataBaseOptionsCreateStyle)createStyle;
46+
- (Boolean)sqlite3Exec:(sqlite3 *)ppDb obj:(id)obj status:(PaintingliteExecStatus)status createStyle:(PaintingliteDataBaseOptionsPrimaryKeyStyle)createStyle;
4747

4848
/* 根据类名执行SQL */
4949
- (NSMutableArray *)sqlite3Exec:(sqlite3 *)ppDb objName:(NSString *)objName;
@@ -55,7 +55,7 @@ NS_ASSUME_NONNULL_BEGIN
5555
- (NSMutableArray *)execQueryTableInfo:(sqlite3 *)ppDb tableName:(NSString *__nonnull)tableName;
5656

5757
/* 获得表字段 */
58-
- (NSMutableArray *)getTableInfo:(sqlite3 *)ppDb objName:(NSString *__nonnull)objName;
58+
- (NSMutableArray *)getTableInfo:(sqlite3 *)ppDb tableName:(NSString *__nonnull)tableName;
5959

6060
/* 获得表名当前JSON文件 */
6161
- (NSArray *)getCurrentTableNameWithCache;

0 commit comments

Comments
 (0)