mirror of https://github.com/nextcloud/server
feat: Add delete task API
Signed-off-by: Julius Härtl <jus@bitgrid.net>
This commit is contained in:
parent
05a6a799a7
commit
fca1c309a0
|
@ -156,6 +156,36 @@ class TextProcessingApiController extends \OCP\AppFramework\OCSController {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* This endpoint allows to delete a scheduled task for a user
|
||||
*
|
||||
* @param int $id The id of the task
|
||||
*
|
||||
* @return DataResponse<Http::STATUS_OK, array{task: CoreTextProcessingTask}, array{}>|DataResponse<Http::STATUS_NOT_FOUND|Http::STATUS_INTERNAL_SERVER_ERROR, array{message: string}, array{}>
|
||||
*
|
||||
* 200: Task returned
|
||||
* 404: Task not found
|
||||
*/
|
||||
#[NoAdminRequired]
|
||||
public function deleteTask(int $id): DataResponse {
|
||||
try {
|
||||
$task = $this->textProcessingManager->getUserTask($id, $this->userId);
|
||||
|
||||
$this->textProcessingManager->deleteTask($task);
|
||||
|
||||
$json = $task->jsonSerialize();
|
||||
|
||||
return new DataResponse([
|
||||
'task' => $json,
|
||||
]);
|
||||
} catch (NotFoundException $e) {
|
||||
return new DataResponse(['message' => $this->l->t('Task not found')], Http::STATUS_NOT_FOUND);
|
||||
} catch (\RuntimeException $e) {
|
||||
return new DataResponse(['message' => $this->l->t('Internal error')], Http::STATUS_INTERNAL_SERVER_ERROR);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* This endpoint returns a list of tasks of a user that are related
|
||||
* with a specific appId and optionally with an identifier
|
||||
|
|
|
@ -149,6 +149,7 @@ $application->registerRoutes($this, [
|
|||
['root' => '/textprocessing', 'name' => 'TextProcessingApi#taskTypes', 'url' => '/tasktypes', 'verb' => 'GET'],
|
||||
['root' => '/textprocessing', 'name' => 'TextProcessingApi#schedule', 'url' => '/schedule', 'verb' => 'POST'],
|
||||
['root' => '/textprocessing', 'name' => 'TextProcessingApi#getTask', 'url' => '/task/{id}', 'verb' => 'GET'],
|
||||
['root' => '/textprocessing', 'name' => 'TextProcessingApi#deleteTask', 'url' => '/task/{id}', 'verb' => 'DELETE'],
|
||||
['root' => '/textprocessing', 'name' => 'TextProcessingApi#listTasksByApp', 'url' => '/tasks/app/{appId}', 'verb' => 'GET'],
|
||||
],
|
||||
]);
|
||||
|
|
|
@ -28,6 +28,7 @@ namespace OC\TextProcessing;
|
|||
use OC\AppFramework\Bootstrap\Coordinator;
|
||||
use OC\TextProcessing\Db\Task as DbTask;
|
||||
use OCP\IConfig;
|
||||
use OCP\TextProcessing\Task;
|
||||
use OCP\TextProcessing\Task as OCPTask;
|
||||
use OC\TextProcessing\Db\TaskMapper;
|
||||
use OCP\AppFramework\Db\DoesNotExistException;
|
||||
|
@ -177,6 +178,17 @@ class Manager implements IManager {
|
|||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
public function deleteTask(Task $task): void {
|
||||
$taskEntity = DbTask::fromPublicTask($task);
|
||||
$this->taskMapper->delete($taskEntity);
|
||||
$this->jobList->remove(TaskBackgroundJob::class, [
|
||||
'taskId' => $task->getId()
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a task from its id
|
||||
*
|
||||
|
|
|
@ -72,6 +72,14 @@ interface IManager {
|
|||
*/
|
||||
public function scheduleTask(Task $task) : void;
|
||||
|
||||
/**
|
||||
* Delete a task that has been scheduled before
|
||||
*
|
||||
* @param Task $task The task to delete
|
||||
* @since 27.1.0
|
||||
*/
|
||||
public function deleteTask(Task $task): void;
|
||||
|
||||
/**
|
||||
* @param int $id The id of the task
|
||||
* @return Task
|
||||
|
|
Loading…
Reference in New Issue