coolify/app/Models/ServiceApplication.php

73 lines
1.9 KiB
PHP
Raw Normal View History

2023-09-20 15:42:41 +02:00
<?php
namespace App\Models;
2023-09-27 15:48:19 +02:00
use Illuminate\Database\Eloquent\Casts\Attribute;
2023-09-20 15:42:41 +02:00
use Illuminate\Database\Eloquent\Factories\HasFactory;
2023-12-13 12:08:12 +01:00
use Illuminate\Database\Eloquent\SoftDeletes;
2023-09-20 15:42:41 +02:00
class ServiceApplication extends BaseModel
{
2023-12-13 12:08:12 +01:00
use HasFactory, SoftDeletes;
2023-09-20 15:42:41 +02:00
protected $guarded = [];
2023-11-06 18:04:18 +01:00
protected static function booted()
{
static::deleting(function ($service) {
$service->update(['fqdn' => null]);
2023-11-06 18:04:18 +01:00
$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);
}
2023-09-22 11:23:49 +02:00
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;
}
2023-09-22 12:08:51 +02:00
public function service()
{
return $this->belongsTo(Service::class);
}
2023-09-22 11:23:49 +02:00
public function persistentStorages()
{
return $this->morphMany(LocalPersistentVolume::class, 'resource');
}
2023-09-22 21:31:47 +02:00
public function fileStorages()
{
return $this->morphMany(LocalFileVolume::class, 'resource');
}
2023-09-27 15:48:19 +02:00
public function fqdns(): Attribute
{
return Attribute::make(
get: fn () => is_null($this->fqdn)
? []
: explode(',', $this->fqdn),
);
}
2023-10-02 18:02:32 +02:00
public function getFilesFromServer(bool $isInit = false)
{
2023-10-02 18:02:32 +02:00
getFilesystemVolumesFromServer($this, $isInit);
}
2023-09-20 15:42:41 +02:00
}