addType('id', 'integer'); $this->addType('lastUpdated', 'integer'); $this->addType('type', 'string'); $this->addType('input', 'string'); $this->addType('output', 'string'); $this->addType('status', 'integer'); $this->addType('userId', 'string'); $this->addType('appId', 'string'); $this->addType('customId', 'string'); $this->addType('completionExpectedAt', 'datetime'); $this->addType('errorMessage', 'string'); $this->addType('progress', 'float'); } public function toRow(): array { return array_combine(self::$columns, array_map(function ($field) { return $this->{'get'.ucfirst($field)}(); }, self::$fields)); } public static function fromPublicTask(OCPTask $task): self { /** @var Task $taskEntity */ $taskEntity = self::fromParams([ 'id' => $task->getId(), 'type' => $task->getTaskTypeId(), 'lastUpdated' => time(), 'status' => $task->getStatus(), 'input' => json_encode($task->getInput(), JSON_THROW_ON_ERROR), 'output' => json_encode($task->getOutput(), JSON_THROW_ON_ERROR), 'errorMessage' => $task->getErrorMessage(), 'userId' => $task->getUserId(), 'appId' => $task->getAppId(), 'customId' => $task->getCustomId(), 'completionExpectedAt' => $task->getCompletionExpectedAt(), 'progress' => $task->getProgress(), ]); return $taskEntity; } /** * @return OCPTask * @throws \JsonException */ public function toPublicTask(): OCPTask { $task = new OCPTask($this->getType(), json_decode($this->getInput(), true, 512, JSON_THROW_ON_ERROR), $this->getAppId(), $this->getuserId(), $this->getCustomId()); $task->setId($this->getId()); $task->setStatus($this->getStatus()); $task->setLastUpdated($this->getLastUpdated()); $task->setOutput(json_decode($this->getOutput(), true, 512, JSON_THROW_ON_ERROR)); $task->setCompletionExpectedAt($this->getCompletionExpectedAt()); $task->setErrorMessage($this->getErrorMessage()); $task->setProgress($this->getProgress()); return $task; } }