Browse Source
feat: Add delete task API
Signed-off-by: Julius Härtl <jus@bitgrid.net>
pull/39680/head
Julius Härtl
2 years ago
committed by
Julien Veyssier
No known key found for this signature in database
GPG Key ID: 4141FEE162030638
4 changed files with
51 additions and
0 deletions
-
core/Controller/TextProcessingApiController.php
-
core/routes.php
-
lib/private/TextProcessing/Manager.php
-
lib/public/TextProcessing/IManager.php
|
|
|
@ -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 |
|
|
|
|