CavalliumDBEngine/src/main/java/it/cavallium/dbengine/client/SearchResult.java
2021-02-03 20:13:17 +01:00

55 lines
1.3 KiB
Java

package it.cavallium.dbengine.client;
import java.util.Objects;
import java.util.StringJoiner;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
public class SearchResult<T, U> {
private final Mono<Long> totalHitsCount;
private final Flux<SearchResultItem<T, U>> results;
public SearchResult(Mono<Long> totalHitsCount, Flux<SearchResultItem<T, U>> results) {
this.totalHitsCount = totalHitsCount;
this.results = results;
}
public static <T, U> SearchResult<T, U> empty() {
return new SearchResult<>(Mono.just(0L), Flux.empty());
}
public Mono<Long> totalHitsCount() {
return this.totalHitsCount;
}
public Flux<SearchResultItem<T, U>> results() {
return this.results;
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
SearchResult<?, ?> that = (SearchResult<?, ?>) o;
return Objects.equals(totalHitsCount, that.totalHitsCount) && Objects.equals(results, that.results);
}
@Override
public int hashCode() {
return Objects.hash(totalHitsCount, results);
}
@Override
public String toString() {
return new StringJoiner(", ", SearchResult.class.getSimpleName() + "[", "]")
.add("totalHitsCount=" + totalHitsCount)
.add("results=" + results)
.toString();
}
}