loadRelayDeliveryTargets method

  1. @override
Future<List<RelayDeliveryTarget>> loadRelayDeliveryTargets({
  1. String? eventId,
  2. String? relayUrl,
  3. RelayDeliveryState? state,
  4. bool excludeAcked = false,
  5. int? limit,
})
override

Implementation

@override
Future<List<RelayDeliveryTarget>> loadRelayDeliveryTargets({
  String? eventId,
  String? relayUrl,
  RelayDeliveryState? state,
  bool excludeAcked = false,
  int? limit,
}) async {
  final filters = <sembast.Filter>[];
  if (eventId != null) {
    filters.add(sembast.Filter.equals('eventId', eventId));
  }
  if (relayUrl != null) {
    filters.add(sembast.Filter.equals('relayUrl', relayUrl));
  }
  if (state != null) {
    filters.add(sembast.Filter.equals('state', state.name));
  }
  if (excludeAcked) {
    filters.add(
      sembast.Filter.notEquals('state', RelayDeliveryState.acked.name),
    );
  }

  final finder = sembast.Finder(
    filter: filters.isNotEmpty ? sembast.Filter.and(filters) : null,
    sortOrders: [
      sembast.SortOrder('nextRetryAt'),
      sembast.SortOrder('eventId'),
      sembast.SortOrder('relayUrl'),
    ],
    limit: limit,
  );
  final records = await _relayDeliveryTargetStore.find(
    _database,
    finder: finder,
  );
  return records
      .map((record) => RelayDeliveryTarget.fromJson(record.value))
      .toList();
}