54 lines
1.3 KiB
PHP
54 lines
1.3 KiB
PHP
<?php
|
|
|
|
namespace App\Models;
|
|
|
|
use Illuminate\Database\Eloquent\Casts\Attribute;
|
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
|
use Illuminate\Support\Facades\Cache;
|
|
|
|
class ServiceApplication extends BaseModel
|
|
{
|
|
use HasFactory;
|
|
protected $guarded = [];
|
|
|
|
public function type()
|
|
{
|
|
return 'service';
|
|
}
|
|
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 saveFileVolumes()
|
|
{
|
|
saveFileVolumesHelper($this);
|
|
}
|
|
public function configurationRequired() {
|
|
$required = false;
|
|
foreach($this->fileStorages as $fileStorage) {
|
|
if (!$fileStorage->is_directory && $fileStorage->content == null) {
|
|
$required = true;
|
|
break;
|
|
}
|
|
}
|
|
return $required;
|
|
}
|
|
}
|