run<Z extends DataClass> method

Future<void> run<Z extends DataClass>(
  1. DataOperation operation,
  2. String route, {
  3. Map<String, dynamic>? query,
  4. Z? model,
  5. required dynamic then(
    1. DataWaiter<Z>
    ),
})

Implementation

Future<void> run<Z extends DataClass>(DataOperation operation, String route,
    {Map<String, dynamic>? query,
    Z? model,
    required Function(DataWaiter<Z>) then}) async {
  try {
    switch (operation) {
      case DataOperation.GET:
        var r = await fetcher.get<Z>(route, query ?? {});
        then.call(r);
        break;
      case DataOperation.ADD:
        if (model != null) {
          var r = await fetcher.add<Z>(route, model);
          then.call(r);
        }
        break;
      case DataOperation.UPDATE:
        if (model != null) {
          var r = await fetcher.update<Z>(route, model);
          then.call(r);
        }
        break;
      case DataOperation.REMOVE:
        var r =
            await fetcher.remove<Z>(route, data: model, query: query ?? {});
        then.call(r);
        break;
    }
  } catch (e) {
    _failLoading();
    _logError(e, 'run method');
  } finally {
    notifyListeners();
  }
}