'array', 'result' => 'array', 'queued_at' => 'datetime', 'available_at' => 'datetime', 'started_at' => 'datetime', 'completed_at' => 'datetime', 'failed_at' => 'datetime', 'last_heartbeat_at' => 'datetime', 'locked_at' => 'datetime', ]; public function order(): BelongsTo { return $this->belongsTo(CustomerHostingOrder::class, 'customer_hosting_order_id'); } public function agent(): BelongsTo { return $this->belongsTo(ServerAgent::class, 'server_agent_id'); } public function sites(): HasMany { return $this->hasMany(ServerSite::class, 'latest_server_task_id'); } public function databases(): HasMany { return $this->hasMany(ServerDatabase::class, 'latest_server_task_id'); } public function files(): HasMany { return $this->hasMany(ServerFile::class, 'latest_server_task_id'); } public function canRetry(bool $retryable = true): bool { return $retryable && $this->attempt_count < max(1, (int) $this->max_attempts); } }