Bulk Update Listener¶
Listeners for bulk update work very similarly to the ones for single oject update. The differences between single object and bulk update include the method names to add and remove listener objects as well as the object delivered to the listener.
Conditional bulk update listener¶
When an API client executes a bulkUpdate
API request using the same whereClause
value as the one specified in addBulkUpdateListener
, the listener receives a real-time event.
EventHandlerForClass *eventHandler = [Backendless.shared.data of:[Order class]].rt;
RTSubscription *subscription = [eventHandler addBulkUpdateListenerWithWhereClause:@"orderAmount > 1000" responseHandler:^(BulkEvent *bulkEvent) {
NSLog(@"%@ objects with %@ have been updated", bulkEvent.count, bulkEvent.whereClause);
} errorHandler:^(Fault *fault) {
NSLog(@"Error: %@", fault.message);
}];
let eventHandler = Backendless.shared.data.of(Order.self).rt
let subscription = eventHandler?.addBulkUpdateListener(whereClause: "orderAmount > 1000", responseHandler: { bulkEvent in
print("\(bulkEvent.count ?? 0) objects with \(bulkEvent.whereClause ?? "no where clause") have been updated")
}, errorHandler: { fault in
print("Error: \(fault.message ?? "")")
})
EventHandlerForMap *eventHandler = [Backendless.shared.data ofTable:@"Order"].rt;
RTSubscription *subscription = [eventHandler addBulkUpdateListenerWithWhereClause:@"orderAmount > 1000" responseHandler:^(BulkEvent *bulkEvent) {
NSLog(@"%@ objects with %@ have been updated", bulkEvent.count, bulkEvent.whereClause);
} errorHandler:^(Fault *fault) {
NSLog(@"Error: %@", fault.message);
}];
let eventHandler = Backendless.shared.data.ofTable("Order").rt
let subscription = eventHandler?.addBulkUpdateListener(whereClause: "orderAmount > 1000", responseHandler: { bulkEvent in
print("\(bulkEvent.count ?? 0) objects with \(bulkEvent.whereClause ?? "no where clause") have been updated")
}, errorHandler: { fault in
print("Error: \(fault.message ?? "")")
})
Unconditional bulk update listener¶
A registered listener will receive a real-time request for all bulkUpdate
API requests.
EventHandlerForClass *eventHandler = [Backendless.shared.data of:[Order class]].rt;
RTSubscription *subscription = [eventHandler addBulkUpdateListenerWithResponseHandler:^(BulkEvent *bulkEvent) {
NSLog(@"%@ objects have been updated", bulkEvent.count);
} errorHandler:^(Fault *fault) {
NSLog(@"Error: %@", fault.message);
}];
let eventHandler = Backendless.shared.data.of(Order.self).rt
let subscription = eventHandler?.addBulkUpdateListener(responseHandler: { bulkEvent in
print("\(bulkEvent.count ?? 0) objects have been updated")
}, errorHandler: { fault in
print("Error: \(fault.message ?? "")")
})
EventHandlerForMap *eventHandler = [Backendless.shared.data ofTable:@"Order"].rt;
RTSubscription *subscription = [eventHandler addBulkUpdateListenerWithResponseHandler:^(BulkEvent *bulkEvent) {
NSLog(@"%@ objects have been updated", bulkEvent.count);
} errorHandler:^(Fault *fault) {
NSLog(@"Error: %@", fault.message);
}];
let eventHandler = Backendless.shared.data.ofTable("Order").rt
let subscription = eventHandler?.addBulkUpdateListener(responseHandler: { bulkEvent in
print("\(bulkEvent.count ?? 0) objects have been updated")
}, errorHandler: { fault in
print("Error: \(fault.message ?? "")")
})
For both conditional and unconditional update listeners, the BulkEvent
object received in the callback contains the following properties:
whereClause
- the where clause value used in the API call to identify the objects updated in the database.count
- the number of objects updated in the database.
Removing listeners¶
The method removes all registered listeners for the bulk update event:
// for the class-based approach:
EventHandlerForClass *eventHandler = [Backendless.shared.data of:[Order class]].rt;
[eventHandler removeBulkUpdateListeners];
// for the map-based approach:
EventHandlerForMap *eventHandler = [Backendless.shared.data ofTable:@"Order"].rt;
[eventHandler removeBulkUpdateListeners];
// for the class-based approach:
let eventHandler = Backendless.shared.data.of(Order.self).rt
eventHandler?.removeBulkUpdateListeners()
// for the map-based approach:
let eventHandler = Backendless.shared.data.ofTable("Order").rt
eventHandler?.removeBulkUpdateListeners()
The method below removes all listeners which process events for a specific where clause.
The value of the whereClause
argument must be the same as one in the addBulkUpdateListener
method:
// for the class-based approach:
EventHandlerForClass *eventHandler = [Backendless.shared.data of:[Order class]].rt;
[eventHandler removeUpdateListenersWithWhereClause:@"orderAmount > 1000"];
// for the map-based approach:
EventHandlerForMap *eventHandler = [Backendless.shared.data ofTable:@"Order"].rt;
[eventHandler removeBulkUpdateListenersWithWhereClause:@"orderAmount > 1000"];
// for the class-based approach:
let eventHandler = Backendless.shared.data.of(Order.self).rt
eventHandler?.removeUpdateListeners(whereClause: "orderAmount > 1000")
// for the map-based approach:
let eventHandler = Backendless.shared.data.ofTable("Order").rt
eventHandler?.removeUpdateListeners(whereClause: "orderAmount > 1000")
Removing a specific listener¶
This method removes a listener identified by subscription that contains this listener:
// for the class-based approach:
// TODO
// for the map-based approach:
// TODO
// for the class-based approach:
// TODO
// for the map-based approach:
// TODO