INA-5 | Use fractal

This commit is contained in:
Nikola Cirkovic 2022-05-25 00:06:42 +02:00
parent 5d744ed8e4
commit de4adadfae
4 changed files with 80 additions and 7 deletions

View File

@ -14,15 +14,20 @@ namespace App\Http\Controllers;
use App\Http\Requests\TaskScheduler\CreateScheduledTaskRequest;
use App\Http\Requests\TaskScheduler\UpdateScheduledJobRequest;
use App\Http\Requests\TaskScheduler\UpdateScheduleRequest;
use App\Jobs\Ninja\TaskScheduler;
use App\Jobs\Report\ProfitAndLoss;
use App\Models\ScheduledJob;
use App\Models\Scheduler;
use App\Transformers\TaskSchedulerTransformer;
use Carbon\Carbon;
use Illuminate\Database\Eloquent\Model;
use Symfony\Component\HttpFoundation\Request;
class TaskSchedulerController extends BaseController
{
protected $entity_type = TaskScheduler::class;
protected $entity_transformer = TaskSchedulerTransformer::class;
/**
* @OA\GET(
* path="/api/v1/task_scheduler/",
@ -49,7 +54,12 @@ class TaskSchedulerController extends BaseController
public function index()
{
return Scheduler::where('company_id', auth()->user()->company()->id)->cursor();
set_time_limit(45);
$schedulers = Scheduler::where('company_id', auth()->user()->company()->id);
return $this->listResponse($schedulers);
}
/**
@ -116,9 +126,9 @@ class TaskSchedulerController extends BaseController
* )
*/
public function show(Scheduler $scheduler): Scheduler
public function show(Scheduler $scheduler)
{
return $scheduler;
return $this->itemResponse($scheduler);
}
/**

View File

@ -46,10 +46,13 @@ class TaskScheduler implements ShouldQueue
*/
public function handle()
{
foreach (MultiDB::$dbs as $db) {
$pending_schedulers = $this->fetchJobs();
foreach ($pending_schedulers as $scheduler) {
$this->doJob($scheduler);
MultiDB::setDB($db);
$pending_schedulers = $this->fetchJobs();
foreach ($pending_schedulers as $scheduler) {
$this->doJob($scheduler);
}
}
}
@ -61,7 +64,6 @@ class TaskScheduler implements ShouldQueue
if (!$job || !$company) {
return;
}
MultiDB::setDb($company->db);
$parameters = $job->parameters;

View File

@ -0,0 +1,22 @@
<?php
namespace App\Transformers;
use App\Models\ScheduledJob;
use App\Utils\Traits\MakesHash;
class ScheduledJobTransformer extends EntityTransformer
{
use MakesHash;
public function transform(ScheduledJob $job)
{
return [
'id' => $this->encodePrimaryKey($job->id),
'action_name' => $job->action_name,
'parameters' => $job->parameters
];
}
}

View File

@ -0,0 +1,39 @@
<?php
namespace App\Transformers;
use App\Models\ScheduledJob;
use App\Models\Scheduler;
use App\Utils\Traits\MakesHash;
class TaskSchedulerTransformer extends EntityTransformer
{
use MakesHash;
protected $defaultIncludes = [
'job'
];
public function includeJob(Scheduler $scheduler)
{
$transformer = new ScheduledJobTransformer($this->serializer);
return $this->item($scheduler->job, $transformer, ScheduledJob::class);
}
public function transform(Scheduler $scheduler)
{
return [
'id' => $this->encodePrimaryKey($scheduler->id),
'company_id' => $this->encodePrimaryKey($scheduler->user_id),
'paused' => $scheduler->paused,
'archived' => $scheduler->archived,
'repeat_every' => $scheduler->repeat_every,
'start_from' => $scheduler->start_from,
'scheduled_run' => $scheduler->scheduled_run,
];
}
}