-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMDDInserter.m
More file actions
62 lines (47 loc) · 1.92 KB
/
MDDInserter.m
File metadata and controls
62 lines (47 loc) · 1.92 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
//
// MDDInserter.m
// MDDatabase
//
// Created by xulinfeng on 2018/3/23.
// Copyright © 2018年 markejave. All rights reserved.
//
#import "MDDInserter.h"
#import "MDDInsertSetter.h"
#import "MDDTableInfo.h"
#import "MDDDescription.h"
#import "MDDConditionSet.h"
@implementation MDDInserter
+ (instancetype)inserterWithTableInfo:(MDDTableInfo *)tableInfo setters:(NSArray<MDDInsertSetter *> *)setters conditionSet:(MDDConditionSet *)conditionSet;{
MDDInserter *descriptor = [self descriptorWithTableInfo:tableInfo];
descriptor.setters = setters;
descriptor.conditionSet = conditionSet;
return descriptor;
}
+ (MDDInserter *)inserterWithObject:(id)object tableInfo:(id<MDDTableInfo>)tableInfo;{
NSParameterAssert(object && tableInfo);
NSArray<MDDInsertSetter *> *setters = [MDDInsertSetter settersWithObject:object tableInfo:tableInfo];
NSParameterAssert(setters && [setters count]);
return [MDDInserter inserterWithTableInfo:tableInfo setters:setters conditionSet:nil];
}
- (MDDDescription *)SQLDescription;{
NSMutableArray *values = [NSMutableArray array];
NSMutableString *SQL = [NSMutableString stringWithFormat:@" INSERT INTO %@ ", [[self tableInfo] name]];
MDDDescription *description = [MDDInsertSetter descriptionWithSetters:[self setters]];
NSParameterAssert(description);
if ([description SQL]) {
[SQL appendString:[description SQL]];
[values addObjectsFromArray:[description values]];
}
if ([self conditionSet]) {
description = [[self conditionSet] SQLDescription];
if ([description SQL]) {
[SQL appendString:[description SQL]];
[values addObjectsFromArray:[description values]];
}
}
return [MDDDescription descriptionWithSQL:SQL values:values];
}
- (NSString *)description{
return [[self dictionaryWithValuesForKeys:@[@"setters", @"conditionSet"]] description];
}
@end