update(['fqdn' => null]); $service->persistentStorages()->delete(); $service->fileStorages()->delete(); }); } public function isLogDrainEnabled() { return data_get($this, 'is_log_drain_enabled', false); } public function isStripprefixEnabled() { return data_get($this, 'is_stripprefix_enabled', true); } public function isGzipEnabled() { return data_get($this, 'is_gzip_enabled', true); } public function type() { return 'service'; } public function serviceType() { $found = str(collect(SPECIFIC_SERVICES)->filter(function ($service) { return str($this->image)->before(':')->value() === $service; })->first()); if ($found->isNotEmpty()) { return $found; } return null; } public function service() { return $this->belongsTo(Service::class); } public function persistentStorages() { return $this->morphMany(LocalPersistentVolume::class, 'resource'); } public function fileStorages() { return $this->morphMany(LocalFileVolume::class, 'resource'); } public function fqdns(): Attribute { return Attribute::make( get: fn () => is_null($this->fqdn) ? [] : explode(',', $this->fqdn), ); } public function getFilesFromServer(bool $isInit = false) { getFilesystemVolumesFromServer($this, $isInit); } }