executeVerb method

  1. @override
Future<String?> executeVerb(
  1. VerbBuilder builder, {
  2. bool? sync,
})

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;
}