From c01330dc064591a8abbfc2a52a3d46cd4a16e070 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Tue, 19 Mar 2024 04:30:26 -0400 Subject: [PATCH] Remove service --- .../Controllers/Admin/DatabaseController.php | 4 +-- .../Controllers/Admin/Eggs/EggController.php | 5 ++- app/Models/Egg.php | 16 +++++++++ app/Services/Eggs/EggDeletionService.php | 33 ------------------- 4 files changed, 19 insertions(+), 39 deletions(-) delete mode 100644 app/Services/Eggs/EggDeletionService.php diff --git a/app/Http/Controllers/Admin/DatabaseController.php b/app/Http/Controllers/Admin/DatabaseController.php index c4f1e589e..a30b58fee 100644 --- a/app/Http/Controllers/Admin/DatabaseController.php +++ b/app/Http/Controllers/Admin/DatabaseController.php @@ -45,10 +45,8 @@ class DatabaseController extends Controller /** * Display database host to user. */ - public function view(int $host): View + public function view(DatabaseHost $host): View { - /** @var DatabaseHost $host */ - $host = DatabaseHost::query()->findOrFail($host); $databases = $host->databases()->with('server')->paginate(25); return view('admin.databases.view', [ diff --git a/app/Http/Controllers/Admin/Eggs/EggController.php b/app/Http/Controllers/Admin/Eggs/EggController.php index 201cea986..2c71e6e85 100644 --- a/app/Http/Controllers/Admin/Eggs/EggController.php +++ b/app/Http/Controllers/Admin/Eggs/EggController.php @@ -10,7 +10,6 @@ use Illuminate\View\Factory as ViewFactory; use App\Http\Controllers\Controller; use App\Services\Eggs\EggUpdateService; use App\Services\Eggs\EggCreationService; -use App\Services\Eggs\EggDeletionService; use App\Http\Requests\Admin\Egg\EggFormRequest; class EggController extends Controller @@ -21,7 +20,6 @@ class EggController extends Controller public function __construct( protected AlertsMessageBag $alert, protected EggCreationService $creationService, - protected EggDeletionService $deletionService, protected EggUpdateService $updateService, protected ViewFactory $view ) { @@ -105,7 +103,8 @@ class EggController extends Controller */ public function destroy(Egg $egg): RedirectResponse { - $this->deletionService->handle($egg->id); + $egg->delete(); + $this->alert->success(trans('admin/eggs.notices.deleted'))->flash(); return redirect()->route('admin.eggs.view', $egg->id); diff --git a/app/Models/Egg.php b/app/Models/Egg.php index d647a6390..5352dd641 100644 --- a/app/Models/Egg.php +++ b/app/Models/Egg.php @@ -2,6 +2,8 @@ namespace App\Models; +use App\Exceptions\Service\Egg\HasChildrenException; +use App\Exceptions\Service\HasActiveServersException; use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Relations\BelongsTo; @@ -140,6 +142,15 @@ class Egg extends Model 'update_url' => null, ]; + protected static function booted(): void + { + static::deleting(function (self $egg) { + throw_if($egg->servers()->count(), new HasActiveServersException(trans('exceptions.egg.delete_has_servers'))); + + throw_if($egg->children()->count(), new HasChildrenException(trans('exceptions.egg.has_children'))); + }); + } + /** * Returns the install script for the egg; if egg is copying from another * it will return the copied script. @@ -277,6 +288,11 @@ class Egg extends Model return $this->belongsTo(self::class, 'copy_script_from'); } + public function children(): HasMany + { + return $this->hasMany(self::class, 'config_from'); + } + /** * Get the parent egg from which to copy configuration settings. */ diff --git a/app/Services/Eggs/EggDeletionService.php b/app/Services/Eggs/EggDeletionService.php deleted file mode 100644 index 623a87bcc..000000000 --- a/app/Services/Eggs/EggDeletionService.php +++ /dev/null @@ -1,33 +0,0 @@ -where('egg_id', $egg)->count()) { - throw new HasActiveServersException(trans('exceptions.egg.delete_has_servers')); - } - - $children = Egg::query()->where('config_from', $egg)->count(); - if ($children > 0) { - throw new HasChildrenException(trans('exceptions.egg.has_children')); - } - - $egg = Egg::query()->findOrFail($egg); - - return (int) $egg->delete(); - } -}