'integer', 'site_id' => 'integer', 'auto_start' => 'boolean', 'auto_restart' => 'boolean', 'numprocs' => 'integer', 'redirect_stderr' => 'boolean', ]; public static array $statusColors = [ QueueStatus::RUNNING => 'success', QueueStatus::CREATING => 'warning', QueueStatus::DELETING => 'warning', QueueStatus::FAILED => 'danger', QueueStatus::STARTING => 'warning', QueueStatus::STOPPING => 'warning', QueueStatus::RESTARTING => 'warning', QueueStatus::STOPPED => 'gray', ]; public static function boot(): void { parent::boot(); static::deleting(function (Queue $queue) { try { $queue->server->processManager()->handler()->delete($queue->id, $queue->site_id); } catch (Throwable $e) { Log::error($e); } }); } public function getServerIdAttribute(int $value): int { if (! $value) { $value = $this->site->server_id; $this->fill(['server_id' => $this->site->server_id]); $this->save(); } return $value; } public function server(): BelongsTo { return $this->belongsTo(Server::class); } public function site(): BelongsTo { return $this->belongsTo(Site::class); } public function getLogDirectory(): string { if ($this->user === 'root') { return '/root/.logs/workers'; } return '/home/'.$this->user.'/.logs/workers'; } public function getLogFile(): string { return $this->getLogDirectory().'/'.$this->id.'.log'; } }