Rossmann-IT/yii2-cron

View on GitHub
src/models/TaskRun.php

Summary

Maintainability
A
0 mins
Test Coverage
<?php

namespace rossmann\cron\models;

use rossmann\cron\components\TaskRunInterface;
use yii\db\ActiveRecord;
use yii\db\Query;

/**
 * @author mult1mate
 * @author rossmann-it
 * @since 20.12.2015
 *
 * @property int $id
 * @property int $task_id
 * @property string $status
 * @property string $output
 * @property int $execution_time
 * @property string $ts
 */
class TaskRun extends ActiveRecord implements TaskRunInterface {
    /**
     * @return string
     */
    public static function tableName() {
        return '{{%task_runs}}';
    }

    /**
     * @param int $taskId
     * @param int $count
     * @return array
     */
    public static function getLastRuns($taskId = null, $count = 100) {
        $db = (new Query())
            ->select('task_runs.*, tasks.command')
            ->from(self::tableName())
            ->join('LEFT JOIN', 'tasks', 'tasks.id = task_runs.task_id')
            ->orderBy('task_runs.id desc')
            ->limit($count);
        if ($taskId) {
            $db->where('task_runs.task_id=:task_id', [':task_id' => $taskId]);
        }

        return $db->all();
    }

    /**
     * @param int $taskId
     * @return array|TaskRun
     */
    public static function getLast($taskId) {
        $last = self::find()
            ->where('task_id = :task_id', [':task_id' => $taskId])
            ->orderBy('id DESC')->one();
        return $last;
    }

    /**
     * @inheritdoc
     */
    public function saveTaskRun() {
        return $this->save();
    }

    /**
     * @return int
     */
    public function getId() {
        return $this->id;
    }

    /**
     * @return int
     */
    public function getTaskId() {
        return $this->task_id;
    }

    /**
     * @param int $taskId
     */
    public function setTaskId($taskId) {
        $this->task_id = $taskId;
    }

    /**
     * @return string
     */
    public function getStatus() {
        return $this->status;
    }

    /**
     * @param string $status
     */
    public function setStatus($status) {
        $this->status = $status;
    }

    /**
     * @return int
     */
    public function getExecutionTime() {
        return $this->execution_time;
    }

    /**
     * @param int $executionTime
     */
    public function setExecutionTime($executionTime) {
        $this->execution_time = $executionTime;
    }

    /**
     * @return string
     */
    public function getTs() {
        return $this->ts;
    }

    /**
     * @param string $timestamp
     */
    public function setTs($timestamp) {
        $this->ts = $timestamp;
    }

    /**
     * @return string
     */
    public function getOutput() {
        return $this->output;
    }

    /**
     * @param string $output
     */
    public function setOutput($output) {
        $this->output = $output;
    }
}