CavalliumDBEngine/src/main/java/it/cavallium/dbengine/client/query/ClientQueryParams.java

51 lines
1.6 KiB
Java
Raw Normal View History

2021-03-02 01:53:36 +01:00
package it.cavallium.dbengine.client.query;
2021-05-21 00:19:40 +02:00
import io.soabase.recordbuilder.core.RecordBuilder;
2021-03-02 01:53:36 +01:00
import it.cavallium.dbengine.client.CompositeSnapshot;
2021-10-28 17:18:23 +02:00
import it.cavallium.dbengine.client.Sort;
2021-03-02 01:53:36 +01:00
import it.cavallium.dbengine.client.query.current.data.NoSort;
import it.cavallium.dbengine.client.query.current.data.Query;
import it.cavallium.dbengine.client.query.current.data.QueryParams;
2021-05-21 00:19:40 +02:00
import it.cavallium.dbengine.client.query.current.data.QueryParamsBuilder;
2021-12-13 01:57:37 +01:00
import java.time.Duration;
2021-03-02 01:53:36 +01:00
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
2021-05-21 00:19:40 +02:00
@RecordBuilder
2022-02-11 13:32:50 +01:00
public record ClientQueryParams(@Nullable CompositeSnapshot snapshot,
2021-10-28 23:48:25 +02:00
@NotNull Query query,
long offset,
long limit,
@Nullable Sort sort,
2021-12-13 01:57:37 +01:00
boolean computePreciseHitsCount,
@NotNull Duration timeout) {
2021-05-21 00:19:40 +02:00
2021-10-28 23:48:25 +02:00
public static ClientQueryParamsBuilder builder() {
2021-05-21 00:19:40 +02:00
return ClientQueryParamsBuilder
2021-10-28 23:48:25 +02:00
.builder()
2021-05-21 00:19:40 +02:00
.snapshot(null)
.offset(0)
.limit(Long.MAX_VALUE)
.sort(null)
2021-12-20 16:38:58 +01:00
// Default timeout: 4 minutes
.timeout(Duration.ofMinutes(4))
2021-11-16 23:54:23 +01:00
.computePreciseHitsCount(true);
2021-05-21 00:19:40 +02:00
}
2021-03-02 01:53:36 +01:00
public boolean isSorted() {
return sort != null && sort.isSorted();
2021-03-02 01:53:36 +01:00
}
public QueryParams toQueryParams() {
2021-05-21 00:19:40 +02:00
return QueryParamsBuilder
2021-03-02 01:53:36 +01:00
.builder()
2021-05-21 00:19:40 +02:00
.query(query())
2021-10-28 17:18:23 +02:00
.sort(sort != null ? sort.querySort() : new NoSort())
2021-05-21 00:19:40 +02:00
.offset(offset())
.limit(limit())
2021-11-16 23:54:23 +01:00
.computePreciseHitsCount(computePreciseHitsCount())
2021-12-13 01:57:37 +01:00
.timeoutMilliseconds(timeout.toMillis())
2021-03-02 01:53:36 +01:00
.build();
}
}