lasthourcloud/bootstrap/helpers/applications.php
Andras Bacsai 6e7ee0ca48 a ton 👷‍♂️
2023-05-24 14:26:50 +02:00

33 lines
1.3 KiB
PHP

<?php
use App\Jobs\ApplicationDeploymentJob;
use App\Models\Application;
use App\Models\ApplicationDeploymentQueue;
function queue_application_deployment(Application $application, $metadata)
{
$deployment = ApplicationDeploymentQueue::create([
'application_id' => $application->id,
'metadata' => $metadata,
]);
$queued_deployments = ApplicationDeploymentQueue::where('application_id', $application->id)->where('status', 'queued')->get()->sortByDesc('created_at');
$running_deployments = ApplicationDeploymentQueue::where('application_id', $application->id)->where('status', 'in_progress')->get()->sortByDesc('created_at');
if ($queued_deployments->count() > 1) {
$queued_deployments = $queued_deployments->skip(1);
$queued_deployments->each(function ($queued_deployment, $key) {
$queued_deployment->status = 'cancelled by system';
$queued_deployment->save();
});
}
if ($running_deployments->count() > 0) {
return;
}
dispatch(new ApplicationDeploymentJob(
application_deployment_queue_id: $deployment->id,
deployment_uuid: $metadata['deployment_uuid'],
application_uuid: $metadata['application_uuid'],
force_rebuild: $metadata['force_rebuild'],
commit: $metadata['commit'] ?? null,
));
}