From 8cc4a6fa98137bb5f818965234c6b60844fc0e5e Mon Sep 17 00:00:00 2001 From: Darko Gjorgjijoski Date: Sat, 11 Apr 2026 13:30:00 +0200 Subject: [PATCH] refactor(services): move ModuleInstaller to app/Support/Module MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ModuleInstaller has the same shape as Updater (moved in 7cf72b9f): every method is public static, no constructor, no DI, no instance state. It orchestrates marketplace operations — fetch catalog, download zip, verify checksum, unzip, copy files, run module:migrate/module:enable, dispatch install/enable events — but the orchestration itself is stateless procedural plumbing. Emitting events and writing to the Module eloquent model doesn't make it a service; plenty of static helpers touch models. The distinguishing factor is stateless-procedural vs DI-injected-workflow, and this is clearly the former. 4 consumers updated: ModulesController, ModuleInstallationController, InstallModuleCommand, and a doc comment in config/invoiceshelf.php. 350 tests still pass. This leaves app/Services/ with no single-file driver-less subdirs except Mail/Module/Pdf/Storage which have multiple files each. The Module/ subdir in Services is now deleted entirely — the marketplace installer moved out and there were no other files in there. --- app/Console/Commands/InstallModuleCommand.php | 2 +- .../Controllers/Admin/Modules/ModuleInstallationController.php | 2 +- app/Http/Controllers/Admin/Modules/ModulesController.php | 2 +- app/{Services => Support}/Module/ModuleInstaller.php | 3 +-- config/invoiceshelf.php | 2 +- 5 files changed, 5 insertions(+), 6 deletions(-) rename app/{Services => Support}/Module/ModuleInstaller.php (98%) diff --git a/app/Console/Commands/InstallModuleCommand.php b/app/Console/Commands/InstallModuleCommand.php index f66dd444..ac6d7cea 100644 --- a/app/Console/Commands/InstallModuleCommand.php +++ b/app/Console/Commands/InstallModuleCommand.php @@ -2,7 +2,7 @@ namespace App\Console\Commands; -use App\Services\Module\ModuleInstaller; +use App\Support\Module\ModuleInstaller; use Illuminate\Console\Command; class InstallModuleCommand extends Command diff --git a/app/Http/Controllers/Admin/Modules/ModuleInstallationController.php b/app/Http/Controllers/Admin/Modules/ModuleInstallationController.php index 440a4adf..dfd12ba3 100644 --- a/app/Http/Controllers/Admin/Modules/ModuleInstallationController.php +++ b/app/Http/Controllers/Admin/Modules/ModuleInstallationController.php @@ -5,7 +5,7 @@ namespace App\Http\Controllers\Admin\Modules; use App\Http\Controllers\Controller; use App\Http\Requests\UnzipUpdateRequest; use App\Http\Requests\UploadModuleRequest; -use App\Services\Module\ModuleInstaller; +use App\Support\Module\ModuleInstaller; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; diff --git a/app/Http/Controllers/Admin/Modules/ModulesController.php b/app/Http/Controllers/Admin/Modules/ModulesController.php index c2c5102e..75dfa55c 100644 --- a/app/Http/Controllers/Admin/Modules/ModulesController.php +++ b/app/Http/Controllers/Admin/Modules/ModulesController.php @@ -7,7 +7,7 @@ use App\Events\ModuleEnabledEvent; use App\Http\Controllers\Controller; use App\Http\Resources\ModuleResource; use App\Models\Module as ModelsModule; -use App\Services\Module\ModuleInstaller; +use App\Support\Module\ModuleInstaller; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Nwidart\Modules\Facades\Module; diff --git a/app/Services/Module/ModuleInstaller.php b/app/Support/Module/ModuleInstaller.php similarity index 98% rename from app/Services/Module/ModuleInstaller.php rename to app/Support/Module/ModuleInstaller.php index 4d38610f..b3384f08 100644 --- a/app/Services/Module/ModuleInstaller.php +++ b/app/Support/Module/ModuleInstaller.php @@ -1,6 +1,6 @@