1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- <?php
- /**
- * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors
- * SPDX-License-Identifier: AGPL-3.0-or-later
- */
- namespace OC\Core\Command\TaskProcessing;
- use OC\Core\Command\Base;
- use OCP\TaskProcessing\IManager;
- use OCP\TaskProcessing\Task;
- use Symfony\Component\Console\Input\InputInterface;
- use Symfony\Component\Console\Input\InputOption;
- use Symfony\Component\Console\Output\OutputInterface;
- class ListCommand extends Base {
- public function __construct(
- protected IManager $taskProcessingManager,
- ) {
- parent::__construct();
- }
- protected function configure() {
- $this
- ->setName('taskprocessing:task:list')
- ->setDescription('list tasks')
- ->addOption(
- 'userIdFilter',
- 'u',
- InputOption::VALUE_OPTIONAL,
- 'only get the tasks for one user ID'
- )
- ->addOption(
- 'type',
- 't',
- InputOption::VALUE_OPTIONAL,
- 'only get the tasks for one task type'
- )
- ->addOption(
- 'appId',
- null,
- InputOption::VALUE_OPTIONAL,
- 'only get the tasks for one app ID'
- )
- ->addOption(
- 'customId',
- null,
- InputOption::VALUE_OPTIONAL,
- 'only get the tasks for one custom ID'
- )
- ->addOption(
- 'status',
- 's',
- InputOption::VALUE_OPTIONAL,
- 'only get the tasks that have a specific status (STATUS_UNKNOWN=0, STATUS_SCHEDULED=1, STATUS_RUNNING=2, STATUS_SUCCESSFUL=3, STATUS_FAILED=4, STATUS_CANCELLED=5)'
- )
- ->addOption(
- 'scheduledAfter',
- null,
- InputOption::VALUE_OPTIONAL,
- 'only get the tasks that were scheduled after a specific date (Unix timestamp)'
- )
- ->addOption(
- 'endedBefore',
- null,
- InputOption::VALUE_OPTIONAL,
- 'only get the tasks that ended before a specific date (Unix timestamp)'
- );
- parent::configure();
- }
- protected function execute(InputInterface $input, OutputInterface $output): int {
- $userIdFilter = $input->getOption('userIdFilter');
- if ($userIdFilter === null) {
- $userIdFilter = '';
- } elseif ($userIdFilter === '') {
- $userIdFilter = null;
- }
- $type = $input->getOption('type');
- $appId = $input->getOption('appId');
- $customId = $input->getOption('customId');
- $status = $input->getOption('status');
- $scheduledAfter = $input->getOption('scheduledAfter');
- $endedBefore = $input->getOption('endedBefore');
- $tasks = $this->taskProcessingManager->getTasks($userIdFilter, $type, $appId, $customId, $status, $scheduledAfter, $endedBefore);
- $arrayTasks = array_map(static function (Task $task) {
- $jsonTask = $task->jsonSerialize();
- $jsonTask['error_message'] = $task->getErrorMessage();
- return $jsonTask;
- }, $tasks);
- $this->writeArrayInOutputFormat($input, $output, $arrayTasks);
- return 0;
- }
- }
|