From 6bdc612faf06c04920ea3416491426fe3d545116 Mon Sep 17 00:00:00 2001 From: Prasit Gebsaap Date: Thu, 28 Aug 2025 00:07:32 +0700 Subject: [PATCH 1/2] Remove larastan/larastan --- composer.json | 2 +- phpstan.neon.dist | 4 +-- src/DatabaseLoader.php | 4 +-- src/Models/WorkflowTransition.php | 14 ++++++++- src/WorkflowLoaderServiceProvider.php | 45 +++++++++++++++++++-------- 5 files changed, 50 insertions(+), 19 deletions(-) diff --git a/composer.json b/composer.json index 9a7962e..4e010a8 100644 --- a/composer.json +++ b/composer.json @@ -22,7 +22,6 @@ "zerodahero/laravel-workflow": "^4.0|^5.0" }, "require-dev": { - "larastan/larastan": "^2.9", "laravel/pint": "^1.14", "nunomaduro/collision": "^8.1.1||^7.10.0", "orchestra/canvas": "^8.8||^9.1", @@ -31,6 +30,7 @@ "pestphp/pest-plugin-arch": "^2.7", "pestphp/pest-plugin-laravel": "^2.3", "phpstan/extension-installer": "^1.3", + "phpstan/phpstan": "^1.0", "phpstan/phpstan-deprecation-rules": "^1.1", "phpstan/phpstan-phpunit": "^1.3", "spatie/laravel-ray": "^1.35" diff --git a/phpstan.neon.dist b/phpstan.neon.dist index ab1b4c3..9482051 100644 --- a/phpstan.neon.dist +++ b/phpstan.neon.dist @@ -7,6 +7,6 @@ parameters: - src - config - database + tmpDir: build/phpstan - checkOctaneCompatibility: true - checkModelProperties: true + \ No newline at end of file diff --git a/src/DatabaseLoader.php b/src/DatabaseLoader.php index 3f4cc5f..0d0a35e 100644 --- a/src/DatabaseLoader.php +++ b/src/DatabaseLoader.php @@ -57,14 +57,14 @@ public function getWorkflowStateTransitionTableName(): string public function load(string $workflowName): array { - //$repo = app()->make(WorkflowRepository::class); + // $repo = app()->make(WorkflowRepository::class); return $this->repo->findByName($workflowName); } public function all(): array { - //$repo = app()->make(WorkflowRepository::class); + // $repo = app()->make(WorkflowRepository::class); return $this->repo->all(); } diff --git a/src/Models/WorkflowTransition.php b/src/Models/WorkflowTransition.php index 299f6cf..469ac87 100644 --- a/src/Models/WorkflowTransition.php +++ b/src/Models/WorkflowTransition.php @@ -13,6 +13,8 @@ class WorkflowTransition extends Model { use HasFactory; + protected $table = 'workflow_transitions'; // Static fallback + protected $guarded = ['id']; protected $casts = [ @@ -21,7 +23,17 @@ class WorkflowTransition extends Model public function getTable(): string { - return app(DatabaseLoader::class)->getWorkflowTransitionTableName(); + // ใช้ static table name ในช่วงที่ analyze + if (app()->runningInConsole() && + (!app()->bound(DatabaseLoader::class) || app()->environment('testing'))) { + return $this->table; + } + + try { + return app(DatabaseLoader::class)->getWorkflowTransitionTableName(); + } catch (\Exception $e) { + return $this->table; + } } public function workflow(): BelongsTo diff --git a/src/WorkflowLoaderServiceProvider.php b/src/WorkflowLoaderServiceProvider.php index c6c4a81..053fdac 100644 --- a/src/WorkflowLoaderServiceProvider.php +++ b/src/WorkflowLoaderServiceProvider.php @@ -10,11 +10,6 @@ class WorkflowLoaderServiceProvider extends PackageServiceProvider { public function configurePackage(Package $package): void { - /* - * This class is a Package Service Provider - * - * More info: https://github.com/spatie/laravel-package-tools - */ $package ->name('laravel-workflow-loader') ->hasConfigFile('workflow_loader') @@ -30,16 +25,40 @@ public function configurePackage(Package $package): void public function packageRegistered() { - $this->app->when(\Soap\WorkflowLoader\DatabaseLoader::class) - ->needs('$config') - ->give($this->app->make('config')->get('workflow_loader.loaders.database')); + // Register DatabaseLoader with safe config retrieval + $this->app->singleton(DatabaseLoader::class, function ($app) { + $config = $app['config']->get('workflow_loader.loaders.database', []); + + // Provide default config if not found + if (empty($config) || !isset($config['tableNames'])) { + $config = [ + 'tableNames' => [ + 'workflows' => 'workflows', + 'workflow_states' => 'workflow_states', + 'workflow_transitions' => 'workflow_transitions', + 'workflow_state_transitions' => 'workflow_state_transitions', + ], + ]; + } + + return new DatabaseLoader( + $config, + $app->make(Repositories\WorkflowRepository::class) + ); + }); - $this->app->when(\Soap\WorkflowLoader\WorkflowLoaderRegistry::class) - ->needs('$loaders') - ->give($this->app->make('config')->get('workflow_loader.loaders')); + // Register WorkflowLoaderRegistry + $this->app->singleton(WorkflowLoaderRegistry::class, function ($app) { + $loaders = $app['config']->get('workflow_loader.loaders', []); + return new WorkflowLoaderRegistry($loaders); + }); - $this->app->bind(\Soap\WorkflowLoader\Contracts\WorkflowDatabaseLoader::class, \Soap\WorkflowLoader\DatabaseLoader::class); + // Bind contracts + $this->app->bind( + Contracts\WorkflowDatabaseLoader::class, + DatabaseLoader::class + ); - $this->app->singleton('workflowLoaderRegistry', \Soap\WorkflowLoader\WorkflowLoaderRegistry::class); + $this->app->singleton('workflowLoaderRegistry', WorkflowLoaderRegistry::class); } } From 6a7f7d783d6959f5ac3cc83ed299b56d67135cb8 Mon Sep 17 00:00:00 2001 From: soap <1073690+soap@users.noreply.github.com> Date: Wed, 27 Aug 2025 17:07:58 +0000 Subject: [PATCH 2/2] Fix styling --- src/Models/WorkflowTransition.php | 6 +++--- src/WorkflowLoaderServiceProvider.php | 11 ++++++----- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/Models/WorkflowTransition.php b/src/Models/WorkflowTransition.php index 469ac87..bbf9a86 100644 --- a/src/Models/WorkflowTransition.php +++ b/src/Models/WorkflowTransition.php @@ -24,11 +24,11 @@ class WorkflowTransition extends Model public function getTable(): string { // ใช้ static table name ในช่วงที่ analyze - if (app()->runningInConsole() && - (!app()->bound(DatabaseLoader::class) || app()->environment('testing'))) { + if (app()->runningInConsole() && + (! app()->bound(DatabaseLoader::class) || app()->environment('testing'))) { return $this->table; } - + try { return app(DatabaseLoader::class)->getWorkflowTransitionTableName(); } catch (\Exception $e) { diff --git a/src/WorkflowLoaderServiceProvider.php b/src/WorkflowLoaderServiceProvider.php index 053fdac..bc043e0 100644 --- a/src/WorkflowLoaderServiceProvider.php +++ b/src/WorkflowLoaderServiceProvider.php @@ -28,9 +28,9 @@ public function packageRegistered() // Register DatabaseLoader with safe config retrieval $this->app->singleton(DatabaseLoader::class, function ($app) { $config = $app['config']->get('workflow_loader.loaders.database', []); - + // Provide default config if not found - if (empty($config) || !isset($config['tableNames'])) { + if (empty($config) || ! isset($config['tableNames'])) { $config = [ 'tableNames' => [ 'workflows' => 'workflows', @@ -40,9 +40,9 @@ public function packageRegistered() ], ]; } - + return new DatabaseLoader( - $config, + $config, $app->make(Repositories\WorkflowRepository::class) ); }); @@ -50,12 +50,13 @@ public function packageRegistered() // Register WorkflowLoaderRegistry $this->app->singleton(WorkflowLoaderRegistry::class, function ($app) { $loaders = $app['config']->get('workflow_loader.loaders', []); + return new WorkflowLoaderRegistry($loaders); }); // Bind contracts $this->app->bind( - Contracts\WorkflowDatabaseLoader::class, + Contracts\WorkflowDatabaseLoader::class, DatabaseLoader::class );