Skip to content

Commit f943a8f

Browse files
authored
Add ParseLiveQuery and add missing OCK fields (#67)
* Add missing fields * Add LiveQuery * Update podspec * Switch to canImport * Use if not watchOS * Add delegate for descriptions * Update
1 parent 473f8df commit f943a8f

11 files changed

+42
-27
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ xcuserdata/
1212
## compatibility with Xcode 3 and earlier (ignoring not required starting Xcode 4)
1313
build/
1414
DerivedData/
15+
.DS_Store
1516
*.moved-aside
1617
*.pbxuser
1718
!default.pbxuser

ParseCareKit/PCKObjects/CarePlan.swift

+2-1
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ open class CarePlan: PCKVersionedObject, PCKRemoteSynchronized {
148148
completion(true,nil)
149149
}
150150

151-
public func pullRevisions(_ localClock: Int, cloudClock: OCKRevisionRecord.KnowledgeVector, mergeRevision: @escaping (OCKRevisionRecord) -> Void){
151+
public func pullRevisions(_ localClock: Int, cloudClock: OCKRevisionRecord.KnowledgeVector, mergeRevision: @escaping (OCKRevisionRecord) -> Void) -> PFQuery<PFObject> {
152152

153153
let query = CarePlan.query()!
154154
query.whereKey(kPCKObjectClockKey, greaterThanOrEqualTo: localClock)
@@ -177,6 +177,7 @@ open class CarePlan: PCKVersionedObject, PCKRemoteSynchronized {
177177
let revision = OCKRevisionRecord(entities: entities, knowledgeVector: cloudClock)
178178
mergeRevision(revision)
179179
}
180+
return query
180181
}
181182

182183
public func pushRevision(_ overwriteRemote: Bool, cloudClock: Int, completion: @escaping (Error?) -> Void){

ParseCareKit/PCKObjects/Contact.swift

+2-1
Original file line numberDiff line numberDiff line change
@@ -234,7 +234,7 @@ open class Contact: PCKVersionedObject, PCKRemoteSynchronized {
234234
completion(true,nil)
235235
}
236236

237-
public func pullRevisions(_ localClock: Int, cloudClock: OCKRevisionRecord.KnowledgeVector, mergeRevision: @escaping (OCKRevisionRecord) -> Void){
237+
public func pullRevisions(_ localClock: Int, cloudClock: OCKRevisionRecord.KnowledgeVector, mergeRevision: @escaping (OCKRevisionRecord) -> Void) -> PFQuery<PFObject> {
238238

239239
let query = Contact.query()!
240240
query.whereKey(kPCKObjectClockKey, greaterThanOrEqualTo: localClock)
@@ -263,6 +263,7 @@ open class Contact: PCKVersionedObject, PCKRemoteSynchronized {
263263
let revision = OCKRevisionRecord(entities: entities, knowledgeVector: cloudClock)
264264
mergeRevision(revision)
265265
}
266+
return query
266267
}
267268

268269
public func pushRevision(_ overwriteRemote: Bool, cloudClock: Int, completion: @escaping (Error?) -> Void){

ParseCareKit/PCKObjects/Outcome.swift

+2-1
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ open class Outcome: PCKObject, PCKRemoteSynchronized {
140140
completion(true,nil)
141141
}
142142

143-
public func pullRevisions(_ localClock: Int, cloudClock: OCKRevisionRecord.KnowledgeVector, mergeRevision: @escaping (OCKRevisionRecord) -> Void){
143+
public func pullRevisions(_ localClock: Int, cloudClock: OCKRevisionRecord.KnowledgeVector, mergeRevision: @escaping (OCKRevisionRecord) -> Void) -> PFQuery<PFObject> {
144144

145145
let query = Outcome.query()!
146146
query.whereKey(kPCKObjectClockKey, greaterThanOrEqualTo: localClock)
@@ -169,6 +169,7 @@ open class Outcome: PCKObject, PCKRemoteSynchronized {
169169
let revision = OCKRevisionRecord(entities: entities, knowledgeVector: cloudClock)
170170
mergeRevision(revision)
171171
}
172+
return query
172173
}
173174

174175
public func pushRevision(_ overwriteRemote: Bool, cloudClock: Int, completion: @escaping (Error?) -> Void){

ParseCareKit/PCKObjects/OutcomeValue.swift

+2-2
Original file line numberDiff line numberDiff line change
@@ -140,15 +140,15 @@ open class OutcomeValue: PCKObject, PFSubclassing {
140140
self.value = outcomeValue.value
141141
self.units = outcomeValue.units
142142

143+
self.asset = outcomeValue.asset
143144
self.groupIdentifier = outcomeValue.groupIdentifier
144145
self.tags = outcomeValue.tags
145146
self.source = outcomeValue.source
146147
self.updatedDate = outcomeValue.updatedDate
147148
self.remoteID = outcomeValue.remoteID
148149
self.createdDate = outcomeValue.createdDate
149150
self.notes = outcomeValue.notes?.compactMap{Note(careKitEntity: $0)}
150-
151-
151+
152152
return self
153153
}
154154

ParseCareKit/PCKObjects/PCKObject.swift

+5
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,11 @@ open class PCKObject: PFObject {
4343
self.createdDate = other.createdDate
4444
self.notes = other.notes
4545
self.logicalClock = other.logicalClock
46+
self.asset = other.asset
47+
self.tags = other.tags
48+
self.schemaVersion = other.schemaVersion
49+
self.groupIdentifier = other.groupIdentifier
50+
self.source = other.source
4651
}
4752

4853
open func copyRelationalEntities(_ parse: PCKObject){

ParseCareKit/PCKObjects/Patient.swift

+2-1
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ open class Patient: PCKVersionedObject, PCKRemoteSynchronized {
125125
completion(true,nil)
126126
}
127127

128-
public func pullRevisions(_ localClock: Int, cloudClock: OCKRevisionRecord.KnowledgeVector, mergeRevision: @escaping (OCKRevisionRecord) -> Void){
128+
public func pullRevisions(_ localClock: Int, cloudClock: OCKRevisionRecord.KnowledgeVector, mergeRevision: @escaping (OCKRevisionRecord) -> Void) -> PFQuery<PFObject> {
129129

130130
let query = Patient.query()!
131131
query.whereKey(kPCKObjectClockKey, greaterThanOrEqualTo: localClock)
@@ -154,6 +154,7 @@ open class Patient: PCKVersionedObject, PCKRemoteSynchronized {
154154
let revision = OCKRevisionRecord(entities: entities, knowledgeVector: cloudClock)
155155
mergeRevision(revision)
156156
}
157+
return query
157158
}
158159

159160
public func pushRevision(_ overwriteRemote: Bool, cloudClock: Int, completion: @escaping (Error?) -> Void){

ParseCareKit/PCKObjects/Task.swift

+2-1
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ open class Task: PCKVersionedObject, PCKRemoteSynchronized {
152152
completion(true,nil)
153153
}
154154

155-
public func pullRevisions(_ localClock: Int, cloudClock: OCKRevisionRecord.KnowledgeVector, mergeRevision: @escaping (OCKRevisionRecord) -> Void){
155+
public func pullRevisions(_ localClock: Int, cloudClock: OCKRevisionRecord.KnowledgeVector, mergeRevision: @escaping (OCKRevisionRecord) -> Void) -> PFQuery<PFObject> {
156156

157157
let query = Task.query()!
158158
query.whereKey(kPCKObjectClockKey, greaterThanOrEqualTo: localClock)
@@ -181,6 +181,7 @@ open class Task: PCKVersionedObject, PCKRemoteSynchronized {
181181
let revision = OCKRevisionRecord(entities: entities, knowledgeVector: cloudClock)
182182
mergeRevision(revision)
183183
}
184+
return query
184185
}
185186

186187
public func pushRevision(_ overwriteRemote: Bool, cloudClock: Int, completion: @escaping (Error?) -> Void){

ParseCareKit/ParseRemoteSynchronizationManager.swift

+5-2
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ public protocol ParseRemoteSynchronizationDelegate: OCKRemoteSynchronizationDele
2121
func storeUpdatedPatient(_ patient: OCKPatient)
2222
func storeUpdatedTask(_ task: OCKTask)
2323
func successfullyPushedDataToCloud()
24+
func subscribe(_ query: PFQuery<PFObject>)
2425
}
2526

2627
open class ParseRemoteSynchronizationManager: NSObject, OCKRemoteSynchronizable {
@@ -107,7 +108,7 @@ open class ParseRemoteSynchronizationManager: NSObject, OCKRemoteSynchronizable
107108
}
108109

109110
var currentError = previousError
110-
newConcreteClass.pullRevisions(localClock, cloudClock: cloudClock){
111+
let query = newConcreteClass.pullRevisions(localClock, cloudClock: cloudClock){
111112
customRevision in
112113
mergeRevision(customRevision){
113114
error in
@@ -120,6 +121,7 @@ open class ParseRemoteSynchronizationManager: NSObject, OCKRemoteSynchronizable
120121

121122
}
122123
}
124+
self.parseDelegate?.subscribe(query)
123125
}
124126

125127
func pullRevisionsForCustomClasses(customClassesAlreadyPulled:Int=0, previousError: Error?, localClock: Int, cloudClock: OCKRevisionRecord.KnowledgeVector, mergeRevision: @escaping (OCKRevisionRecord, @escaping (Error?) -> Void) -> Void, completion: @escaping (Error?) -> Void){
@@ -134,7 +136,7 @@ open class ParseRemoteSynchronizationManager: NSObject, OCKRemoteSynchronizable
134136
return
135137
}
136138
var currentError = previousError
137-
newCustomClass.pullRevisions(localClock, cloudClock: cloudClock){
139+
let query = newCustomClass.pullRevisions(localClock, cloudClock: cloudClock){
138140
customRevision in
139141
mergeRevision(customRevision){
140142
error in
@@ -146,6 +148,7 @@ open class ParseRemoteSynchronizationManager: NSObject, OCKRemoteSynchronizable
146148
self.pullRevisionsForCustomClasses(customClassesAlreadyPulled: customClassesAlreadyPulled+1, previousError: currentError, localClock: localClock, cloudClock: cloudClock, mergeRevision: mergeRevision, completion: completion)
147149
}
148150
}
151+
self.parseDelegate?.subscribe(query)
149152
}else{
150153
completion(previousError)
151154
}

ParseCareKit/Protocols/PCKSynchronized.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,6 @@ public protocol PCKSynchronized: PFObject, PFSubclassing {
2525
Protocol that defines the properties and methods for parse carekit entities that are synchronized using a knowledge vector.
2626
*/
2727
public protocol PCKRemoteSynchronized: PCKSynchronized {
28-
func pullRevisions(_ localClock: Int, cloudClock: OCKRevisionRecord.KnowledgeVector, mergeRevision: @escaping (OCKRevisionRecord) -> Void)
28+
func pullRevisions(_ localClock: Int, cloudClock: OCKRevisionRecord.KnowledgeVector, mergeRevision: @escaping (OCKRevisionRecord) -> Void) -> PFQuery<PFObject>
2929
func pushRevision(_ overwriteRemote: Bool, cloudClock: Int, completion: @escaping (Error?) -> Void)
3030
}

0 commit comments

Comments
 (0)