get<T> method

Future<Result<T>> get<T>(
  1. IDs ids
)

Implementation

Future<Result<T>> get<T>(IDs ids) async {
  final localDb = await localRepo();
  try {
    if (hasRemotePriority && includeRemoteTransactions) {
      final result = await remoteRepo!.get<T>(ids);
      if (result.isSuccessfulObj) return result;
    }

    if (includeLocalTransactions && ids.localId != null) {
      final result = await localDb!.get<T>(ids);
      if (result.isSuccessfulObj) return result;
    }

    if (includeRemoteTransactions &&
        StringUtils.instance.isNotBlank(ids.id)) {
      final remoteResult = await remoteRepo!.get<T>(ids);
      if (remoteResult.isSuccessfulObj && includeLocalTransactions) {
        await localDb!.add<T>(remoteResult.obj as JsonObject<T>);
      }
      return remoteResult;
    }

    return Result.error(
        log: Log(msg: 'No local or remote result for ids ${ids.toString()}'));
  } catch (e, st) {
    return _getErrorLog(msg: e.toString(), stacktrace: st);
  } finally {
    // await localDb?.close();
  }
}