@@ -46,18 +46,14 @@ public protocol DBClient {
46
46
*/
47
47
func observable< T: Stored > ( for request: FetchRequest < T > ) -> RequestObservable < T >
48
48
49
- // TODO: remove
50
- func fetch< T: Stored > ( id: String ) -> Task < [ T ] >
51
- func fetch< T: Stored > ( with predicate: NSPredicate ? ) -> Task < [ T ] >
52
-
53
49
/**
54
50
Saves objects to database.
55
51
56
52
- Parameter objects: list of objects to be saved
57
53
58
54
- Returns: `Task` with saved objects or appropriate error in case of failure.
59
55
*/
60
- func save< T: Stored > ( _ objects: [ T ] ) -> Task < [ T ] >
56
+ @ discardableResult func save< T: Stored > ( _ objects: [ T ] ) -> Task < [ T ] >
61
57
62
58
/**
63
59
Updates changed performed with objects to database.
@@ -66,7 +62,7 @@ public protocol DBClient {
66
62
67
63
- Returns: `Task` with updated objects or appropriate error in case of failure.
68
64
*/
69
- func update< T: Stored > ( _ objects: [ T ] ) -> Task < [ T ] >
65
+ @ discardableResult func update< T: Stored > ( _ objects: [ T ] ) -> Task < [ T ] >
70
66
71
67
/**
72
68
Deletes objects from database.
@@ -75,7 +71,7 @@ public protocol DBClient {
75
71
76
72
- Returns: `Task` with deleted objects or appropriate error in case of failure.
77
73
*/
78
- func delete< T: Stored > ( _ objects: [ T ] ) -> Task < [ T ] >
74
+ @ discardableResult func delete< T: Stored > ( _ objects: [ T ] ) -> Task < [ T ] >
79
75
80
76
}
81
77
@@ -91,13 +87,19 @@ public extension DBClient {
91
87
92
88
- Returns: `Task` with found object or nil.
93
89
*/
94
- func findFirst< T: Stored > ( _ type: T . Type , primaryValue: String ) -> Task < T ? > {
90
+ func findFirst< T: Stored > ( _ type: T . Type , primaryValue: String , predicate : NSPredicate ? = nil ) -> Task < T ? > {
95
91
guard let primaryKey = type. primaryKey else {
96
92
return Task ( nil )
97
93
}
98
94
99
- let predicate = NSPredicate ( format: " \( primaryKey) == %@ " , primaryValue)
100
- let request = FetchRequest < T > ( predicate: predicate, fetchLimit: 1 )
95
+ let primaryKeyPredicate = NSPredicate ( format: " \( primaryKey) == %@ " , primaryValue)
96
+ var fetchPredicate : NSPredicate
97
+ if let predicate = predicate {
98
+ fetchPredicate = NSCompoundPredicate ( andPredicateWithSubpredicates: [ primaryKeyPredicate, predicate] )
99
+ } else {
100
+ fetchPredicate = primaryKeyPredicate
101
+ }
102
+ let request = FetchRequest < T > ( predicate: fetchPredicate, fetchLimit: 1 )
101
103
102
104
return execute ( request) . continueWithTask { task -> Task < T ? > in
103
105
if let first = task. result? . first {
@@ -114,7 +116,7 @@ public extension DBClient {
114
116
115
117
- Returns: `Task` with deleted object or appropriate error in case of failure.
116
118
*/
117
- func delete< T: Stored > ( _ object: T ) -> Task < T > {
119
+ @ discardableResult func delete< T: Stored > ( _ object: T ) -> Task < T > {
118
120
return convertArrayTaskToSingleObject ( delete ( [ object] ) )
119
121
}
120
122
@@ -125,7 +127,7 @@ public extension DBClient {
125
127
126
128
- Returns: `Task` with updated object or appropriate error in case of failure.
127
129
*/
128
- func update< T: Stored > ( _ object: T ) -> Task < T > {
130
+ @ discardableResult func update< T: Stored > ( _ object: T ) -> Task < T > {
129
131
return convertArrayTaskToSingleObject ( update ( [ object] ) )
130
132
}
131
133
@@ -136,7 +138,7 @@ public extension DBClient {
136
138
137
139
- Returns: `Task` with saved object or appropriate error in case of failure.
138
140
*/
139
- func save< T: Stored > ( _ object: T ) -> Task < T > {
141
+ @ discardableResult func save< T: Stored > ( _ object: T ) -> Task < T > {
140
142
return convertArrayTaskToSingleObject ( save ( [ object] ) )
141
143
}
142
144
0 commit comments