From e3d9676ba54b61f6e8b6be2be5defef5e74d50a8 Mon Sep 17 00:00:00 2001 From: MA Date: Sun, 9 Feb 2025 16:02:58 +0530 Subject: [PATCH 1/3] wip --- src/main/java/com/meilisearch/sdk/Client.java | 38 ++++++++----- .../com/meilisearch/sdk/TasksHandler.java | 33 +++++++++++ .../meilisearch/sdk/model/BatchResults.java | 9 +++ .../meilisearch/sdk/model/BatchesQuery.java | 43 ++++++++++++++ .../meilisearch/sdk/model/CursorResults.java | 13 +++++ .../sdk/model/batch_dto/Batch.java | 35 ++++++++++++ .../sdk/model/batch_dto/StatDetails.java | 12 ++++ .../meilisearch/integration/BatchTest.java | 56 +++++++++++++++++++ 8 files changed, 225 insertions(+), 14 deletions(-) create mode 100644 src/main/java/com/meilisearch/sdk/model/BatchResults.java create mode 100644 src/main/java/com/meilisearch/sdk/model/BatchesQuery.java create mode 100644 src/main/java/com/meilisearch/sdk/model/CursorResults.java create mode 100644 src/main/java/com/meilisearch/sdk/model/batch_dto/Batch.java create mode 100644 src/main/java/com/meilisearch/sdk/model/batch_dto/StatDetails.java create mode 100644 src/test/java/com/meilisearch/integration/BatchTest.java diff --git a/src/main/java/com/meilisearch/sdk/Client.java b/src/main/java/com/meilisearch/sdk/Client.java index ef925c1c..e8ef7fee 100644 --- a/src/main/java/com/meilisearch/sdk/Client.java +++ b/src/main/java/com/meilisearch/sdk/Client.java @@ -7,20 +7,8 @@ import com.auth0.jwt.algorithms.Algorithm; import com.meilisearch.sdk.exceptions.MeilisearchException; import com.meilisearch.sdk.json.JsonHandler; -import com.meilisearch.sdk.model.CancelTasksQuery; -import com.meilisearch.sdk.model.DeleteTasksQuery; -import com.meilisearch.sdk.model.IndexesQuery; -import com.meilisearch.sdk.model.Key; -import com.meilisearch.sdk.model.KeyUpdate; -import com.meilisearch.sdk.model.KeysQuery; -import com.meilisearch.sdk.model.MultiSearchResult; -import com.meilisearch.sdk.model.Results; -import com.meilisearch.sdk.model.Stats; -import com.meilisearch.sdk.model.SwapIndexesParams; -import com.meilisearch.sdk.model.Task; -import com.meilisearch.sdk.model.TaskInfo; -import com.meilisearch.sdk.model.TasksQuery; -import com.meilisearch.sdk.model.TasksResults; +import com.meilisearch.sdk.model.*; +import com.meilisearch.sdk.model.batch_dto.Batch; import java.util.Date; import java.util.HashMap; import java.util.Map; @@ -352,6 +340,28 @@ public void waitForTask(int uid) throws MeilisearchException { this.tasksHandler.waitForTask(uid); } + /** + * Retrieves a batch by its unique identifier, with exception handling. + * + * @param uid The unique identifier of the batch. + * @return The Batch object corresponding to the given uid. + * @throws MeilisearchException If an error occurs during the request. + */ + public Batch getBatch(int uid) throws MeilisearchException { + return this.tasksHandler.getBatch(uid); + } + + /** + * Retrieves all batches based on the provided query parameters, with exception handling. + * + * @param uid An instance of BatchesQuery containing filtering criteria. + * @return A CursorResults object containing a list of Batch objects. + * @throws MeilisearchException If an error occurs during the request. + */ + public CursorResults getAllBatches(BatchesQuery uid) throws MeilisearchException { + return this.tasksHandler.getAllBatches(uid); + } + /** * Retrieves the key with the specified uid * diff --git a/src/main/java/com/meilisearch/sdk/TasksHandler.java b/src/main/java/com/meilisearch/sdk/TasksHandler.java index c59defd0..93307f2e 100644 --- a/src/main/java/com/meilisearch/sdk/TasksHandler.java +++ b/src/main/java/com/meilisearch/sdk/TasksHandler.java @@ -4,6 +4,7 @@ import com.meilisearch.sdk.exceptions.MeilisearchTimeoutException; import com.meilisearch.sdk.http.URLBuilder; import com.meilisearch.sdk.model.*; +import com.meilisearch.sdk.model.batch_dto.Batch; import java.util.Date; /** @@ -159,11 +160,43 @@ void waitForTask(int taskUid, int timeoutInMs, int intervalInMs) throws Meilisea } } + /** + * Retrieves a batch by its unique identifier. + * + * @param uid The unique identifier of the batch. + * @return The Batch object corresponding to the given uid. + */ + public Batch getBatch(int uid) { + String urlPath = batchPath().addSubroute(Integer.toString(uid)).getURL(); + return httpClient.get(urlPath, Batch.class); + } + + /** + * Retrieves all batches based on the provided query parameters. + * + * @param batchesQuery An instance of BatchesQuery containing filtering criteria. + * @return A CursorResults object containing a list of Batch objects. + */ + public CursorResults getAllBatches(BatchesQuery batchesQuery) { + String urlPath = batchPath().addQuery(batchesQuery.toQuery()).getURL(); + BatchResults batchResults = httpClient.post(urlPath, null, BatchResults.class); + return batchResults.getBatchCursorResults(); + } + /** Creates an URLBuilder for the constant route tasks */ private URLBuilder tasksPath() { return new URLBuilder("/tasks"); } + /** + * Constructs a URLBuilder instance for the "/batches" API endpoint. + * + * @return A URLBuilder object initialized with the "/batches" path. + */ + private URLBuilder batchPath() { + return new URLBuilder("/batches"); + } + /** Add index uid to index uids list in task query */ TasksQuery addIndexUidToQuery(String indexUid, TasksQuery param) { if (param != null && param.getIndexUids() != null) { diff --git a/src/main/java/com/meilisearch/sdk/model/BatchResults.java b/src/main/java/com/meilisearch/sdk/model/BatchResults.java new file mode 100644 index 00000000..56a7c8b5 --- /dev/null +++ b/src/main/java/com/meilisearch/sdk/model/BatchResults.java @@ -0,0 +1,9 @@ +package com.meilisearch.sdk.model; + +import com.meilisearch.sdk.model.batch_dto.Batch; +import lombok.Data; + +@Data +public class BatchResults { + private CursorResults batchCursorResults; +} diff --git a/src/main/java/com/meilisearch/sdk/model/BatchesQuery.java b/src/main/java/com/meilisearch/sdk/model/BatchesQuery.java new file mode 100644 index 00000000..d5b2074b --- /dev/null +++ b/src/main/java/com/meilisearch/sdk/model/BatchesQuery.java @@ -0,0 +1,43 @@ +package com.meilisearch.sdk.model; + +import com.meilisearch.sdk.http.URLBuilder; +import java.util.Date; +import lombok.Data; + +@Data +public class BatchesQuery { + private int[] uids; + private int[] batchUids; + private String[] types; + private String[] statuses; + private String[] indexUids; + private int[] canceledBy; + private Date beforeEnqueuedAt; + private Date afterEnqueuedAt; + private Date beforeStartedAt; + private Date afterStartedAt; + private Date beforeFinishedAt; + private Date afterFinishedAt; + private int limit; + private int from; + + public String toQuery() { + URLBuilder urlb = + new URLBuilder() + .addParameter("uids", this.getUids()) + .addParameter("batchUids", this.getBatchUids()) + .addParameter("types", this.getTypes()) + .addParameter("statuses", this.getStatuses()) + .addParameter("indexUids", this.getIndexUids()) + .addParameter("canceledBy", this.getCanceledBy()) + .addParameter("beforeEnqueuedAt", this.getBeforeEnqueuedAt()) + .addParameter("afterEnqueuedAt", this.getAfterEnqueuedAt()) + .addParameter("beforeStartedAt", this.getBeforeStartedAt()) + .addParameter("afterStartedAt", this.getAfterStartedAt()) + .addParameter("beforeFinishedAt", this.getBeforeFinishedAt()) + .addParameter("afterFinishedAt", this.getAfterFinishedAt()) + .addParameter("limit", this.getLimit()) + .addParameter("from", this.getFrom()); + return urlb.getURL(); + } +} diff --git a/src/main/java/com/meilisearch/sdk/model/CursorResults.java b/src/main/java/com/meilisearch/sdk/model/CursorResults.java new file mode 100644 index 00000000..69027256 --- /dev/null +++ b/src/main/java/com/meilisearch/sdk/model/CursorResults.java @@ -0,0 +1,13 @@ +package com.meilisearch.sdk.model; + +import java.util.List; +import lombok.Data; + +@Data +public class CursorResults { + private List results; + private int limit; + private int from; + private Integer next; + private int total; +} diff --git a/src/main/java/com/meilisearch/sdk/model/batch_dto/Batch.java b/src/main/java/com/meilisearch/sdk/model/batch_dto/Batch.java new file mode 100644 index 00000000..65644a2c --- /dev/null +++ b/src/main/java/com/meilisearch/sdk/model/batch_dto/Batch.java @@ -0,0 +1,35 @@ +package com.meilisearch.sdk.model.batch_dto; + +import java.util.List; +import lombok.Data; + +@Data +public class Batch { + private int uid; + private BatchDetails details; + private BatchProgress progress; + private StatDetails stats; + private String startedAt; + private String finishedAt; + private String duration; +} + +@Data +class BatchDetails { + private Integer receivedDocuments; + private Integer indexedDocuments; + private Integer deletedDocuments; +} + +@Data +class BatchProgress { + private List steps; + private int percentage; +} + +@Data +class StepDetails { + private String currentStep; + private int finished; + private int total; +} diff --git a/src/main/java/com/meilisearch/sdk/model/batch_dto/StatDetails.java b/src/main/java/com/meilisearch/sdk/model/batch_dto/StatDetails.java new file mode 100644 index 00000000..abb4c120 --- /dev/null +++ b/src/main/java/com/meilisearch/sdk/model/batch_dto/StatDetails.java @@ -0,0 +1,12 @@ +package com.meilisearch.sdk.model.batch_dto; + +import java.util.Map; +import lombok.Data; + +@Data +public class StatDetails { + private int totalNbTasks; + private Map status; + private Map types; + private Map indexUids; +} diff --git a/src/test/java/com/meilisearch/integration/BatchTest.java b/src/test/java/com/meilisearch/integration/BatchTest.java new file mode 100644 index 00000000..f0bfedb9 --- /dev/null +++ b/src/test/java/com/meilisearch/integration/BatchTest.java @@ -0,0 +1,56 @@ +package com.meilisearch.integration; + +import static org.junit.jupiter.api.Assertions.*; + +import com.meilisearch.integration.classes.AbstractIT; +import com.meilisearch.sdk.model.BatchesQuery; +import com.meilisearch.sdk.model.CursorResults; +import com.meilisearch.sdk.model.batch_dto.Batch; +import org.junit.jupiter.api.*; + +@Tag("integration") +public class BatchTest extends AbstractIT { + + private static final String INDEX_UID = "batch-test"; + + @BeforeEach + void setup() throws Exception { + this.setUp(); + this.setUpJacksonClient(); + client.createIndex(INDEX_UID); + } + + @AfterAll + static void cleanMeilisearch() { + cleanup(); + } + + @Test + void testGetAllBatches() { + CursorResults batches = client.getAllBatches(new BatchesQuery()); + assertNotNull(batches); + assertFalse(batches.getResults().isEmpty(), "Batch results should not be empty"); + } + + @Test + void testGetOneBatch() { + + CursorResults batches = client.getAllBatches(new BatchesQuery()); + assertFalse(batches.getResults().isEmpty(), "No batches found"); + + Batch firstBatch = client.getBatch(batches.getResults().get(0).getUid()); + + assertNotNull(firstBatch); + assertEquals(batches.getResults().get(0).getUid(), firstBatch.getUid()); + assertNotNull(firstBatch.getDetails()); + assertNotNull(firstBatch.getStats()); + assertTrue(firstBatch.getStats().getTotalNbTasks() > 0); + assertNotNull(firstBatch.getStats().getStatus()); + assertNotNull(firstBatch.getStats().getTypes()); + assertNotNull(firstBatch.getStats().getIndexUids()); + assertNotNull(firstBatch.getDuration()); + assertNotNull(firstBatch.getStartedAt()); + assertNotNull(firstBatch.getFinishedAt()); + assertNotNull(firstBatch.getProgress()); + } +} From 51674ce32245d62d6365bf0af9fcdccf78030684 Mon Sep 17 00:00:00 2001 From: MA Date: Sun, 9 Feb 2025 17:45:43 +0530 Subject: [PATCH 2/3] implementation complete --- src/main/java/com/meilisearch/sdk/Client.java | 7 ++++--- src/main/java/com/meilisearch/sdk/TasksHandler.java | 3 +-- .../java/com/meilisearch/sdk/model/BatchesQuery.java | 6 ++++-- .../java/com/meilisearch/integration/BatchTest.java | 12 ++++-------- 4 files changed, 13 insertions(+), 15 deletions(-) diff --git a/src/main/java/com/meilisearch/sdk/Client.java b/src/main/java/com/meilisearch/sdk/Client.java index e8ef7fee..d94025d4 100644 --- a/src/main/java/com/meilisearch/sdk/Client.java +++ b/src/main/java/com/meilisearch/sdk/Client.java @@ -354,12 +354,13 @@ public Batch getBatch(int uid) throws MeilisearchException { /** * Retrieves all batches based on the provided query parameters, with exception handling. * - * @param uid An instance of BatchesQuery containing filtering criteria. + * @param batchesQuery An instance of BatchesQuery containing filtering criteria. * @return A CursorResults object containing a list of Batch objects. * @throws MeilisearchException If an error occurs during the request. */ - public CursorResults getAllBatches(BatchesQuery uid) throws MeilisearchException { - return this.tasksHandler.getAllBatches(uid); + public CursorResults getAllBatches(BatchesQuery batchesQuery) + throws MeilisearchException { + return this.tasksHandler.getAllBatches(batchesQuery); } /** diff --git a/src/main/java/com/meilisearch/sdk/TasksHandler.java b/src/main/java/com/meilisearch/sdk/TasksHandler.java index 93307f2e..1b10b561 100644 --- a/src/main/java/com/meilisearch/sdk/TasksHandler.java +++ b/src/main/java/com/meilisearch/sdk/TasksHandler.java @@ -179,8 +179,7 @@ public Batch getBatch(int uid) { */ public CursorResults getAllBatches(BatchesQuery batchesQuery) { String urlPath = batchPath().addQuery(batchesQuery.toQuery()).getURL(); - BatchResults batchResults = httpClient.post(urlPath, null, BatchResults.class); - return batchResults.getBatchCursorResults(); + return (CursorResults) httpClient.get(urlPath, CursorResults.class, Batch.class); } /** Creates an URLBuilder for the constant route tasks */ diff --git a/src/main/java/com/meilisearch/sdk/model/BatchesQuery.java b/src/main/java/com/meilisearch/sdk/model/BatchesQuery.java index d5b2074b..268ec414 100644 --- a/src/main/java/com/meilisearch/sdk/model/BatchesQuery.java +++ b/src/main/java/com/meilisearch/sdk/model/BatchesQuery.java @@ -3,8 +3,10 @@ import com.meilisearch.sdk.http.URLBuilder; import java.util.Date; import lombok.Data; +import lombok.experimental.Accessors; @Data +@Accessors(chain = true) public class BatchesQuery { private int[] uids; private int[] batchUids; @@ -18,8 +20,8 @@ public class BatchesQuery { private Date afterStartedAt; private Date beforeFinishedAt; private Date afterFinishedAt; - private int limit; - private int from; + private int limit = -1; + private int from = -1; public String toQuery() { URLBuilder urlb = diff --git a/src/test/java/com/meilisearch/integration/BatchTest.java b/src/test/java/com/meilisearch/integration/BatchTest.java index f0bfedb9..ba9b782b 100644 --- a/src/test/java/com/meilisearch/integration/BatchTest.java +++ b/src/test/java/com/meilisearch/integration/BatchTest.java @@ -11,13 +11,10 @@ @Tag("integration") public class BatchTest extends AbstractIT { - private static final String INDEX_UID = "batch-test"; - @BeforeEach void setup() throws Exception { this.setUp(); this.setUpJacksonClient(); - client.createIndex(INDEX_UID); } @AfterAll @@ -27,14 +24,13 @@ static void cleanMeilisearch() { @Test void testGetAllBatches() { - CursorResults batches = client.getAllBatches(new BatchesQuery()); - assertNotNull(batches); - assertFalse(batches.getResults().isEmpty(), "Batch results should not be empty"); + CursorResults allBatches = client.getAllBatches(new BatchesQuery()); + assertNotNull(allBatches); + assertFalse(allBatches.getResults().isEmpty(), "Batch results should not be empty"); } @Test void testGetOneBatch() { - CursorResults batches = client.getAllBatches(new BatchesQuery()); assertFalse(batches.getResults().isEmpty(), "No batches found"); @@ -51,6 +47,6 @@ void testGetOneBatch() { assertNotNull(firstBatch.getDuration()); assertNotNull(firstBatch.getStartedAt()); assertNotNull(firstBatch.getFinishedAt()); - assertNotNull(firstBatch.getProgress()); + // TODO: Add Check for progress to be non-null, but response always provides null } } From 6eb3c9047aadf2847fd80c479e30ffe3111a1275 Mon Sep 17 00:00:00 2001 From: MA Date: Sun, 9 Feb 2025 18:28:38 +0530 Subject: [PATCH 3/3] refactor --- src/main/java/com/meilisearch/sdk/Client.java | 3 +- .../com/meilisearch/sdk/TasksHandler.java | 13 ++--- .../meilisearch/sdk/enums/OperationType.java | 46 +++++++++++++++++ .../meilisearch/sdk/model/BatchResults.java | 9 ---- .../meilisearch/sdk/model/CursorResults.java | 6 +++ .../model/{ => batch/req}/BatchesQuery.java | 8 ++- .../sdk/model/batch/res/Batch.java | 21 ++++++++ .../sdk/model/batch/res/BatchProgress.java | 10 ++++ .../sdk/model/batch/res/StatDetails.java | 14 +++++ .../sdk/model/batch/res/StepDetails.java | 10 ++++ .../sdk/model/batch_dto/Batch.java | 35 ------------- .../sdk/model/batch_dto/StatDetails.java | 12 ----- .../meilisearch/integration/BatchTest.java | 51 ++++++++++--------- 13 files changed, 149 insertions(+), 89 deletions(-) create mode 100644 src/main/java/com/meilisearch/sdk/enums/OperationType.java delete mode 100644 src/main/java/com/meilisearch/sdk/model/BatchResults.java rename src/main/java/com/meilisearch/sdk/model/{ => batch/req}/BatchesQuery.java (88%) create mode 100644 src/main/java/com/meilisearch/sdk/model/batch/res/Batch.java create mode 100644 src/main/java/com/meilisearch/sdk/model/batch/res/BatchProgress.java create mode 100644 src/main/java/com/meilisearch/sdk/model/batch/res/StatDetails.java create mode 100644 src/main/java/com/meilisearch/sdk/model/batch/res/StepDetails.java delete mode 100644 src/main/java/com/meilisearch/sdk/model/batch_dto/Batch.java delete mode 100644 src/main/java/com/meilisearch/sdk/model/batch_dto/StatDetails.java diff --git a/src/main/java/com/meilisearch/sdk/Client.java b/src/main/java/com/meilisearch/sdk/Client.java index d94025d4..ba081013 100644 --- a/src/main/java/com/meilisearch/sdk/Client.java +++ b/src/main/java/com/meilisearch/sdk/Client.java @@ -8,7 +8,8 @@ import com.meilisearch.sdk.exceptions.MeilisearchException; import com.meilisearch.sdk.json.JsonHandler; import com.meilisearch.sdk.model.*; -import com.meilisearch.sdk.model.batch_dto.Batch; +import com.meilisearch.sdk.model.batch.req.BatchesQuery; +import com.meilisearch.sdk.model.batch.res.Batch; import java.util.Date; import java.util.HashMap; import java.util.Map; diff --git a/src/main/java/com/meilisearch/sdk/TasksHandler.java b/src/main/java/com/meilisearch/sdk/TasksHandler.java index 1b10b561..3692d919 100644 --- a/src/main/java/com/meilisearch/sdk/TasksHandler.java +++ b/src/main/java/com/meilisearch/sdk/TasksHandler.java @@ -4,7 +4,8 @@ import com.meilisearch.sdk.exceptions.MeilisearchTimeoutException; import com.meilisearch.sdk.http.URLBuilder; import com.meilisearch.sdk.model.*; -import com.meilisearch.sdk.model.batch_dto.Batch; +import com.meilisearch.sdk.model.batch.req.BatchesQuery; +import com.meilisearch.sdk.model.batch.res.Batch; import java.util.Date; /** @@ -161,7 +162,7 @@ void waitForTask(int taskUid, int timeoutInMs, int intervalInMs) throws Meilisea } /** - * Retrieves a batch by its unique identifier. + * Retrieves a batch by uid. * * @param uid The unique identifier of the batch. * @return The Batch object corresponding to the given uid. @@ -175,7 +176,7 @@ public Batch getBatch(int uid) { * Retrieves all batches based on the provided query parameters. * * @param batchesQuery An instance of BatchesQuery containing filtering criteria. - * @return A CursorResults object containing a list of Batch objects. + * @return A CursorResults object containing a paginated list of Batch objects. */ public CursorResults getAllBatches(BatchesQuery batchesQuery) { String urlPath = batchPath().addQuery(batchesQuery.toQuery()).getURL(); @@ -187,11 +188,7 @@ private URLBuilder tasksPath() { return new URLBuilder("/tasks"); } - /** - * Constructs a URLBuilder instance for the "/batches" API endpoint. - * - * @return A URLBuilder object initialized with the "/batches" path. - */ + /** Constructs a URLBuilder instance for the "/batches" API endpoint. */ private URLBuilder batchPath() { return new URLBuilder("/batches"); } diff --git a/src/main/java/com/meilisearch/sdk/enums/OperationType.java b/src/main/java/com/meilisearch/sdk/enums/OperationType.java new file mode 100644 index 00000000..fd26ace8 --- /dev/null +++ b/src/main/java/com/meilisearch/sdk/enums/OperationType.java @@ -0,0 +1,46 @@ +package com.meilisearch.sdk.enums; + +import com.fasterxml.jackson.annotation.JsonValue; +import com.google.gson.annotations.SerializedName; + +/** + * Enum for Operation Type + * + * @see API specification + */ +public enum OperationType { + @SerializedName("indexCreation") + INDEX_CREATION("indexCreation"), + @SerializedName("indexUpdate") + INDEX_UPDATE("indexUpdate"), + @SerializedName("indexDeletion") + INDEX_DELETE("indexDeletion"), + @SerializedName("indexSwap") + INDEX_SWAP("indexSwap"), + @SerializedName("documentAdditionOrUpdate") + DOCUMENT_UPSERT("documentAdditionOrUpdate"), + @SerializedName("documentDeletion") + DOCUMENT_DELETE("documentDeletion"), + @SerializedName("settingsUpdate") + SETTINGS_UPDATE("settingsUpdate"), + @SerializedName("dumpCreation") + DUMP_CREATE("dumpCreation"), + @SerializedName("taskCancelation") + TASK_CANCEL("taskCancelation"), + @SerializedName("taskDeletion") + TASK_DELETE("taskDeletion"), + @SerializedName("snapshotCreation") + SNAPSHOT_CREATE("snapshotCreation"); + + public final String operationType; + + OperationType(String operationType) { + this.operationType = operationType; + } + + @JsonValue + @Override + public String toString() { + return this.operationType; + } +} diff --git a/src/main/java/com/meilisearch/sdk/model/BatchResults.java b/src/main/java/com/meilisearch/sdk/model/BatchResults.java deleted file mode 100644 index 56a7c8b5..00000000 --- a/src/main/java/com/meilisearch/sdk/model/BatchResults.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.meilisearch.sdk.model; - -import com.meilisearch.sdk.model.batch_dto.Batch; -import lombok.Data; - -@Data -public class BatchResults { - private CursorResults batchCursorResults; -} diff --git a/src/main/java/com/meilisearch/sdk/model/CursorResults.java b/src/main/java/com/meilisearch/sdk/model/CursorResults.java index 69027256..7557e25b 100644 --- a/src/main/java/com/meilisearch/sdk/model/CursorResults.java +++ b/src/main/java/com/meilisearch/sdk/model/CursorResults.java @@ -3,6 +3,12 @@ import java.util.List; import lombok.Data; +/** + * Data structure paginated response Currently used in : Batches. + * + * @see API + * specification + */ @Data public class CursorResults { private List results; diff --git a/src/main/java/com/meilisearch/sdk/model/BatchesQuery.java b/src/main/java/com/meilisearch/sdk/model/batch/req/BatchesQuery.java similarity index 88% rename from src/main/java/com/meilisearch/sdk/model/BatchesQuery.java rename to src/main/java/com/meilisearch/sdk/model/batch/req/BatchesQuery.java index 268ec414..cdd08988 100644 --- a/src/main/java/com/meilisearch/sdk/model/BatchesQuery.java +++ b/src/main/java/com/meilisearch/sdk/model/batch/req/BatchesQuery.java @@ -1,10 +1,16 @@ -package com.meilisearch.sdk.model; +package com.meilisearch.sdk.model.batch.req; import com.meilisearch.sdk.http.URLBuilder; import java.util.Date; import lombok.Data; import lombok.experimental.Accessors; +/** + * Data structure of a query parameter for batches route + * + * @see API + * specification + */ @Data @Accessors(chain = true) public class BatchesQuery { diff --git a/src/main/java/com/meilisearch/sdk/model/batch/res/Batch.java b/src/main/java/com/meilisearch/sdk/model/batch/res/Batch.java new file mode 100644 index 00000000..9cf35584 --- /dev/null +++ b/src/main/java/com/meilisearch/sdk/model/batch/res/Batch.java @@ -0,0 +1,21 @@ +package com.meilisearch.sdk.model.batch.res; + +import com.meilisearch.sdk.model.TaskDetails; +import lombok.Data; + +/** + * Data structure of the batch object response + * + * @see API + * specification + */ +@Data +public class Batch { + private int uid = 0; + private TaskDetails details; + private BatchProgress progress; + private StatDetails stats; + private String startedAt; + private String finishedAt; + private String duration; +} diff --git a/src/main/java/com/meilisearch/sdk/model/batch/res/BatchProgress.java b/src/main/java/com/meilisearch/sdk/model/batch/res/BatchProgress.java new file mode 100644 index 00000000..7a6e1671 --- /dev/null +++ b/src/main/java/com/meilisearch/sdk/model/batch/res/BatchProgress.java @@ -0,0 +1,10 @@ +package com.meilisearch.sdk.model.batch.res; + +import java.util.List; +import lombok.Data; + +@Data +class BatchProgress { + private List steps; + private int percentage; +} diff --git a/src/main/java/com/meilisearch/sdk/model/batch/res/StatDetails.java b/src/main/java/com/meilisearch/sdk/model/batch/res/StatDetails.java new file mode 100644 index 00000000..6d87ae06 --- /dev/null +++ b/src/main/java/com/meilisearch/sdk/model/batch/res/StatDetails.java @@ -0,0 +1,14 @@ +package com.meilisearch.sdk.model.batch.res; + +import com.meilisearch.sdk.enums.OperationType; +import com.meilisearch.sdk.model.TaskStatus; +import java.util.Map; +import lombok.Data; + +@Data +public class StatDetails { + private int totalNbTasks; + private Map status; + private Map types; + private Map indexUids; +} diff --git a/src/main/java/com/meilisearch/sdk/model/batch/res/StepDetails.java b/src/main/java/com/meilisearch/sdk/model/batch/res/StepDetails.java new file mode 100644 index 00000000..3aa1c4a3 --- /dev/null +++ b/src/main/java/com/meilisearch/sdk/model/batch/res/StepDetails.java @@ -0,0 +1,10 @@ +package com.meilisearch.sdk.model.batch.res; + +import lombok.Data; + +@Data +class StepDetails { + private String currentStep; + private int finished; + private int total; +} diff --git a/src/main/java/com/meilisearch/sdk/model/batch_dto/Batch.java b/src/main/java/com/meilisearch/sdk/model/batch_dto/Batch.java deleted file mode 100644 index 65644a2c..00000000 --- a/src/main/java/com/meilisearch/sdk/model/batch_dto/Batch.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.meilisearch.sdk.model.batch_dto; - -import java.util.List; -import lombok.Data; - -@Data -public class Batch { - private int uid; - private BatchDetails details; - private BatchProgress progress; - private StatDetails stats; - private String startedAt; - private String finishedAt; - private String duration; -} - -@Data -class BatchDetails { - private Integer receivedDocuments; - private Integer indexedDocuments; - private Integer deletedDocuments; -} - -@Data -class BatchProgress { - private List steps; - private int percentage; -} - -@Data -class StepDetails { - private String currentStep; - private int finished; - private int total; -} diff --git a/src/main/java/com/meilisearch/sdk/model/batch_dto/StatDetails.java b/src/main/java/com/meilisearch/sdk/model/batch_dto/StatDetails.java deleted file mode 100644 index abb4c120..00000000 --- a/src/main/java/com/meilisearch/sdk/model/batch_dto/StatDetails.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.meilisearch.sdk.model.batch_dto; - -import java.util.Map; -import lombok.Data; - -@Data -public class StatDetails { - private int totalNbTasks; - private Map status; - private Map types; - private Map indexUids; -} diff --git a/src/test/java/com/meilisearch/integration/BatchTest.java b/src/test/java/com/meilisearch/integration/BatchTest.java index ba9b782b..ea36d13e 100644 --- a/src/test/java/com/meilisearch/integration/BatchTest.java +++ b/src/test/java/com/meilisearch/integration/BatchTest.java @@ -3,9 +3,9 @@ import static org.junit.jupiter.api.Assertions.*; import com.meilisearch.integration.classes.AbstractIT; -import com.meilisearch.sdk.model.BatchesQuery; import com.meilisearch.sdk.model.CursorResults; -import com.meilisearch.sdk.model.batch_dto.Batch; +import com.meilisearch.sdk.model.batch.req.BatchesQuery; +import com.meilisearch.sdk.model.batch.res.Batch; import org.junit.jupiter.api.*; @Tag("integration") @@ -15,6 +15,7 @@ public class BatchTest extends AbstractIT { void setup() throws Exception { this.setUp(); this.setUpJacksonClient(); + cleanup(); } @AfterAll @@ -22,31 +23,35 @@ static void cleanMeilisearch() { cleanup(); } + /** Check if able to fetch a single batch by uid */ @Test - void testGetAllBatches() { + void testGetBatch() { CursorResults allBatches = client.getAllBatches(new BatchesQuery()); - assertNotNull(allBatches); - assertFalse(allBatches.getResults().isEmpty(), "Batch results should not be empty"); + assertFalse(allBatches.getResults().isEmpty(), "No batches found"); + int batchUid = allBatches.getResults().get(0).getUid(); + + Batch batch = client.getBatch(batchUid); + + assertNotNull(batch); + assertEquals(batchUid, batch.getUid()); + assertNotNull(batch.getDetails()); + assertNotNull(batch.getStats()); + assertTrue(batch.getStats().getTotalNbTasks() > 0); + assertNotNull(batch.getStats().getStatus()); + assertNotNull(batch.getStats().getTypes()); + assertNotNull(batch.getStats().getIndexUids()); + assertNotNull(batch.getDuration()); + assertNotNull(batch.getStartedAt()); + assertNotNull(batch.getFinishedAt()); + // TODO: Add Check for progress to be non-null, but response always provides null } + /** Check if able to fetch all batch data as page */ @Test - void testGetOneBatch() { - CursorResults batches = client.getAllBatches(new BatchesQuery()); - assertFalse(batches.getResults().isEmpty(), "No batches found"); - - Batch firstBatch = client.getBatch(batches.getResults().get(0).getUid()); - - assertNotNull(firstBatch); - assertEquals(batches.getResults().get(0).getUid(), firstBatch.getUid()); - assertNotNull(firstBatch.getDetails()); - assertNotNull(firstBatch.getStats()); - assertTrue(firstBatch.getStats().getTotalNbTasks() > 0); - assertNotNull(firstBatch.getStats().getStatus()); - assertNotNull(firstBatch.getStats().getTypes()); - assertNotNull(firstBatch.getStats().getIndexUids()); - assertNotNull(firstBatch.getDuration()); - assertNotNull(firstBatch.getStartedAt()); - assertNotNull(firstBatch.getFinishedAt()); - // TODO: Add Check for progress to be non-null, but response always provides null + void testGetAllBatches() { + CursorResults allBatches = client.getAllBatches(new BatchesQuery()); + + assertNotNull(allBatches); + assertFalse(allBatches.getResults().isEmpty(), "Batch results should not be empty"); } }