nhance/app/Controllers/Jobs.php
2024-09-13 09:00:09 +05:30

66 lines
1.8 KiB
PHP
Executable File

<?php
namespace App\Controllers;
use App\Models\JobModel;
class Jobs extends AdminController
{
const STATUS_DONE = 'done';
const STATUS_QUEUED = 'queued';
const STATUS_RUNNING = 'running';
const STATUS_FAILED = 'failed';
protected $job_payload = [];
protected $myLogger;
/**
* Constructs the class
*/
// public function __construct(array $payload = ['job_name' => 'check','payload' => ['a' => 10]])
public function __construct()
{
// $this->job_payload = $payload;
// $this->myLogger = \Config\Services::mylogger();
}
/**
* add jobs to queue
*/
public static function addJob(array $payload)
{
$jobModel = new JobModel();
$myLogger = \Config\Services::mylogger();
try
{
if(!is_array($payload))
{
throw new \InvalidArgumentException('Invalid payload format while add job');
}
if(!isset($payload['job_name']))
{
throw new \InvalidArgumentException('Job name not found while add job');
}
if(!isset($payload['payload']))
{
throw new \InvalidArgumentException('Job payload not found while add job');
}
$uuid = generate_uuid();
$jobid = $jobModel->insert(['name' => $payload['job_name'],'uuid' => $uuid,'payload' => json_encode($payload['payload'])]);
// echo $jobid;
$myLogger->logme('error','new job {jobid} added to queue',['jobid' => $jobid]);
return ['id' => $jobid,'uuid' => $uuid,'job_name' => $payload['job_name']];
}
catch(\Exception $e)
{
$message = $e->getMessage();
return $message;
$myLogger->logme('error','{messgae}',['messgae' => $message]);
}
}
}