From 75acf3d9ab1a27b2cb84c25d0c5375a43244dc43 Mon Sep 17 00:00:00 2001 From: Rustam Galikhanov Date: Tue, 11 Feb 2025 00:18:55 +0500 Subject: [PATCH] feature/#45 Extend a method query(String entryName, QueryOptions options) for Bucket class. Add a QueryOptions class for the new method --- CHANGELOG.md | 1 + src/main/java/store/reduct/model/QueryOptions.java | 12 ++++++++++++ src/main/java/store/reduct/model/bucket/Bucket.java | 13 +++++++++++++ 3 files changed, 26 insertions(+) create mode 100644 src/main/java/store/reduct/model/QueryOptions.java diff --git a/CHANGELOG.md b/CHANGELOG.md index 4251e59..24a1915 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -32,6 +32,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Add exists option to BucketSettings. [PR-42](https://github.com/reductstore/reduct-java/issues/42) - Bucket.writeRecord receives entry name and bucket. [PR-43](https://github.com/reductstore/reduct-java/issues/43) - Add getBucket method to ReductClient. [PR-44](https://github.com/reductstore/reduct-java/issues/44) +- Extend a method query(String entryName, QueryOptions options) for Bucket class. Add a QueryOptions class for the new method [PR-45](https://github.com/reductstore/reduct-java/issues/45) ### Infrastructure: - Added GitHub Actions for CI/CD [PR-35](https://github.com/reductstore/reduct-java/pull/35) diff --git a/src/main/java/store/reduct/model/QueryOptions.java b/src/main/java/store/reduct/model/QueryOptions.java new file mode 100644 index 0000000..50b5d44 --- /dev/null +++ b/src/main/java/store/reduct/model/QueryOptions.java @@ -0,0 +1,12 @@ +package store.reduct.model; + +import lombok.Builder; +import lombok.Data; + +@Builder +@Data +public class QueryOptions { + private final Long start; + private final Long stop; + private final Long ttl; +} diff --git a/src/main/java/store/reduct/model/bucket/Bucket.java b/src/main/java/store/reduct/model/bucket/Bucket.java index c9c9f15..efc2284 100644 --- a/src/main/java/store/reduct/model/bucket/Bucket.java +++ b/src/main/java/store/reduct/model/bucket/Bucket.java @@ -18,6 +18,7 @@ import store.reduct.common.BucketURL; import store.reduct.common.RecordURL; import store.reduct.common.exception.ReductException; +import store.reduct.model.QueryOptions; import store.reduct.model.mapper.BucketMapper; import store.reduct.model.record.QueryId; import store.reduct.model.record.Record; @@ -288,6 +289,18 @@ public Iterator query(String entryName, Long start, Long stop, Long ttl) return new RecordIterator(name, entryName, queryId.getId(), reductClient.getServerProperties().url()); } + /** + * Query records for a time interval + * + * @param entryName + * @param options + * @return + */ + public Iterator query(String entryName, QueryOptions options) + throws ReductException, IllegalArgumentException { + return query(entryName, options.getStart(), options.getStop(), options.getTtl()); + } + public Iterator getMetaInfos(String entryName, Long start, Long stop, Long ttl) throws ReductException, IllegalArgumentException { if (Strings.isBlank(name) || Strings.isBlank(entryName) || Objects.isNull(start) || Objects.isNull(stop)