listRunnableRuns method
Lists runnable runs, excluding those already leased.
Implementation
@override
/// Lists runnable runs, excluding those already leased.
Future<List<String>> listRunnableRuns({
DateTime? now,
int limit = 50,
int offset = 0,
}) async {
final resolvedNow = now ?? _clock.now();
final candidates = _runs.values.where((state) {
if (state.status != WorkflowStatus.running) return false;
if (state.waitTopic != null) return false;
if (!_leaseExpired(state, resolvedNow) &&
state.ownerId != null &&
state.ownerId!.isNotEmpty) {
return false;
}
return true;
}).toList()..sort((a, b) => b.id.compareTo(a.id));
final start = offset < 0 ? 0 : offset;
return candidates
.skip(start)
.take(limit)
.map((state) => state.id)
.toList(growable: false);
}