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
|
|
|
|
2021-10-14 00:49:21 +02: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();
|
|
|
|
}
|
|
|
|
}
|