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\CreateScheduledTaskRequest;
use App\Http\Requests\TaskScheduler\UpdateScheduledJobRequest; use App\Http\Requests\TaskScheduler\UpdateScheduledJobRequest;
use App\Http\Requests\TaskScheduler\UpdateScheduleRequest; use App\Http\Requests\TaskScheduler\UpdateScheduleRequest;
use App\Jobs\Ninja\TaskScheduler;
use App\Jobs\Report\ProfitAndLoss; use App\Jobs\Report\ProfitAndLoss;
use App\Models\ScheduledJob; use App\Models\ScheduledJob;
use App\Models\Scheduler; use App\Models\Scheduler;
use App\Transformers\TaskSchedulerTransformer;
use Carbon\Carbon; use Carbon\Carbon;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Request;
class TaskSchedulerController extends BaseController class TaskSchedulerController extends BaseController
{ {
protected $entity_type = TaskScheduler::class;
protected $entity_transformer = TaskSchedulerTransformer::class;
/** /**
* @OA\GET( * @OA\GET(
* path="/api/v1/task_scheduler/", * path="/api/v1/task_scheduler/",
@ -49,7 +54,12 @@ class TaskSchedulerController extends BaseController
public function index() 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() public function handle()
{ {
foreach (MultiDB::$dbs as $db) {
$pending_schedulers = $this->fetchJobs(); MultiDB::setDB($db);
foreach ($pending_schedulers as $scheduler) { $pending_schedulers = $this->fetchJobs();
$this->doJob($scheduler); foreach ($pending_schedulers as $scheduler) {
$this->doJob($scheduler);
}
} }
} }
@ -61,7 +64,6 @@ class TaskScheduler implements ShouldQueue
if (!$job || !$company) { if (!$job || !$company) {
return; return;
} }
MultiDB::setDb($company->db);
$parameters = $job->parameters; $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,
];
}
}