package it.cavallium.dbengine.client; import it.cavallium.dbengine.database.collections.ValueGetter; import org.reactivestreams.Publisher; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; @SuppressWarnings("unused") public record SearchResultKeys(Flux> results, long totalHitsCount, Mono release) { public static SearchResultKeys empty() { return new SearchResultKeys<>(Flux.empty(), 0L, Mono.empty()); } public SearchResult withValues(ValueGetter valuesGetter) { return new SearchResult<>(results.map(item -> new SearchResultItem<>(item.key(), item.key().flatMap(valuesGetter::get), item.score() )), totalHitsCount, release); } public Flux> resultsThenRelease() { return Flux .usingWhen( Mono.just(true), _unused -> results, _unused -> release ); } }