Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add cancel task api for v0.30.0 #547

Merged
merged 5 commits into from
Feb 16, 2023
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions src/main/java/com/meilisearch/sdk/Client.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
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.IndexesQuery;
import com.meilisearch.sdk.model.Key;
import com.meilisearch.sdk.model.KeyUpdate;
Expand Down Expand Up @@ -253,6 +254,18 @@ public TasksResults getTasks(TasksQuery param) throws MeilisearchException {
return this.tasksHandler.getTasks(param);
}

/**
* Cancel any number of enqueued or processing tasks
* https://docs.meilisearch.com/reference/api/tasks.html#cancel-tasks
*
* @param param accept by the tasks route
* @return Meilisearch API response as TaskInfo
* @throws MeilisearchException if an error occurs
*/
public TaskInfo cancelTasks(CancelTasksQuery param) throws MeilisearchException {
return this.tasksHandler.cancelTasks(param);
}

/**
* Waits for a task to be processed
*
Expand Down
16 changes: 16 additions & 0 deletions src/main/java/com/meilisearch/sdk/TasksHandler.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@
import com.meilisearch.sdk.exceptions.MeilisearchException;
import com.meilisearch.sdk.exceptions.MeilisearchTimeoutException;
import com.meilisearch.sdk.http.URLBuilder;
import com.meilisearch.sdk.model.CancelTasksQuery;
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 java.util.Date;
Expand Down Expand Up @@ -100,6 +102,20 @@ TasksResults getTasks(String indexUid, TasksQuery param) throws MeilisearchExcep
return result;
}

/**
* Delete tasks from the client
*
* @param param accept by the tasks route
* @return Meilisearch API response as TaskInfo
* @throws MeilisearchException if client request causes an error
*/
TaskInfo cancelTasks(CancelTasksQuery param) throws MeilisearchException {
URLBuilder urlb = tasksPath().addSubroute("cancel");
TaskInfo result =
httpClient.post(urlb.addQuery(param.toQuery()).getURL(), null, TaskInfo.class);
return result;
}

/**
* Waits for a task to be processed
*
Expand Down
41 changes: 41 additions & 0 deletions src/main/java/com/meilisearch/sdk/model/CancelTasksQuery.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package com.meilisearch.sdk.model;

import com.meilisearch.sdk.http.URLBuilder;
import java.util.Date;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;

/**
* Data structure of a query parameter for tasks route
*
* <p>https://docs.meilisearch.com/reference/api/tasks.html#query-parameters
*/
@Setter
@Getter
@Accessors(chain = true)
public class CancelTasksQuery {
private int[] uids;
private String[] statuses;
private String[] types;
private String[] indexUids;
private Date beforeEnqueuedAt;
private Date afterEnqueuedAt;
private Date beforeStartedAt;
private Date afterStartedAt;

public CancelTasksQuery() {}

public String toQuery() {
URLBuilder urlb =
new URLBuilder()
.addParameter("statuses", this.getStatuses())
alallema marked this conversation as resolved.
Show resolved Hide resolved
.addParameter("types", this.getTypes())
.addParameter("indexUids", this.getIndexUids())
.addParameter("beforeEnqueuedAt", this.getBeforeEnqueuedAt())
.addParameter("afterEnqueuedAt", this.getAfterEnqueuedAt())
.addParameter("beforeStartedAt", this.getBeforeStartedAt())
.addParameter("afterStartedAt", this.getAfterStartedAt());
return urlb.getURL();
}
}
37 changes: 37 additions & 0 deletions src/test/java/com/meilisearch/integration/TasksTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import com.meilisearch.integration.classes.AbstractIT;
import com.meilisearch.integration.classes.TestData;
import com.meilisearch.sdk.Index;
import com.meilisearch.sdk.model.CancelTasksQuery;
import com.meilisearch.sdk.model.Task;
import com.meilisearch.sdk.model.TaskInfo;
import com.meilisearch.sdk.model.TasksQuery;
Expand Down Expand Up @@ -117,6 +118,42 @@ public void testClientGetTasksAllQueryParameters() throws Exception {
assertNotNull(result.getNext());
}

/** Test Cancel Task */
@Test
public void testClientCancelTask() throws Exception {
CancelTasksQuery query =
new CancelTasksQuery().setStatuses(new String[] {"enqueued", "succeeded"});

TaskInfo task = client.cancelTasks(query);

assertTrue(task instanceof TaskInfo);
assertNotNull(task.getStatus());
assertNotEquals("", task.getStatus());
assertNull(task.getIndexUid());
assertEquals("taskCancelation", task.getType());
}

/** Test Cancel Task with multiple filters */
@Test
public void testClientCancelTaskWithMultipleFilters() throws Exception {
Date date = new Date();
CancelTasksQuery query =
new CancelTasksQuery()
.setUids(new int[] {0, 1, 2})
.setStatuses(new String[] {"enqueued", "succeeded"})
.setTypes(new String[] {"indexDeletion"})
.setIndexUids(new String[] {"index"})
.setBeforeEnqueuedAt(date);

TaskInfo task = client.cancelTasks(query);

assertTrue(task instanceof TaskInfo);
assertNotNull(task.getStatus());
assertNotEquals("", task.getStatus());
assertNull(task.getIndexUid());
assertEquals("taskCancelation", task.getType());
}

/** Test waitForTask */
@Test
public void testWaitForTask() throws Exception {
Expand Down