loadRelayDeliveryTargets method
Future<List<RelayDeliveryTarget> >
loadRelayDeliveryTargets({
- String? eventId,
- String? relayUrl,
- RelayDeliveryState? state,
- bool excludeAcked = false,
- 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();
}