executeVerb method
Executes a verb builder on the local secondary. For update and delete operation, if sync
is
set to true then data is synced from local to remote.
if sync
is set to false, no sync operation is done.
Implementation
@override
Future<String?> executeVerb(VerbBuilder builder, {sync}) async {
String? verbResult;
try {
if (builder is UpdateVerbBuilder || builder is DeleteVerbBuilder) {
//1. if local and server are out of sync, first sync before updating current key-value
//2 . update/delete to local store
if (builder is UpdateVerbBuilder) {
verbResult = await _update(builder);
} else if (builder is DeleteVerbBuilder) {
verbResult = await _delete(builder);
}
// 3. sync latest update/delete if strategy is immediate
if (sync != null && sync) {
_logger.finer('calling sync immediate from local secondary');
_atClient.syncService.sync();
}
} else if (builder is LLookupVerbBuilder) {
verbResult = await _llookup(builder);
} else if (builder is ScanVerbBuilder) {
verbResult = await _scan(builder);
}
} on AtLookUpException catch (e) {
// Catches AtLookupException and
// converts to AtClientException. rethrows any other exception.
throw (AtClientException(e.errorCode, e.errorMessage));
}
return verbResult;
}