Skip to content

Commit 370115e

Browse files
authored
Merge pull request #20 from soap/develop
Develop
2 parents e4d9ea2 + 6a7f7d7 commit 370115e

File tree

5 files changed

+51
-19
lines changed

5 files changed

+51
-19
lines changed

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
"zerodahero/laravel-workflow": "^6.0.0"
2323
},
2424
"require-dev": {
25-
"larastan/larastan": "^2.9",
2625
"laravel/pint": "^1.14",
2726
"nunomaduro/collision": "^8.1.1||^7.10.0",
2827
"orchestra/canvas": "^8.8||^9.1",
@@ -31,6 +30,7 @@
3130
"pestphp/pest-plugin-arch": "^2.7",
3231
"pestphp/pest-plugin-laravel": "^2.3",
3332
"phpstan/extension-installer": "^1.3",
33+
"phpstan/phpstan": "^1.0",
3434
"phpstan/phpstan-deprecation-rules": "^1.1",
3535
"phpstan/phpstan-phpunit": "^1.3",
3636
"spatie/laravel-ray": "^1.35"

phpstan.neon.dist

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,6 @@ parameters:
77
- src
88
- config
99
- database
10+
1011
tmpDir: build/phpstan
11-
checkOctaneCompatibility: true
12-
checkModelProperties: true
12+

src/DatabaseLoader.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,14 +57,14 @@ public function getWorkflowStateTransitionTableName(): string
5757

5858
public function load(string $workflowName): array
5959
{
60-
//$repo = app()->make(WorkflowRepository::class);
60+
// $repo = app()->make(WorkflowRepository::class);
6161

6262
return $this->repo->findByName($workflowName);
6363
}
6464

6565
public function all(): array
6666
{
67-
//$repo = app()->make(WorkflowRepository::class);
67+
// $repo = app()->make(WorkflowRepository::class);
6868

6969
return $this->repo->all();
7070
}

src/Models/WorkflowTransition.php

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ class WorkflowTransition extends Model
1313
{
1414
use HasFactory;
1515

16+
protected $table = 'workflow_transitions'; // Static fallback
17+
1618
protected $guarded = ['id'];
1719

1820
protected $casts = [
@@ -21,7 +23,17 @@ class WorkflowTransition extends Model
2123

2224
public function getTable(): string
2325
{
24-
return app(DatabaseLoader::class)->getWorkflowTransitionTableName();
26+
// ใช้ static table name ในช่วงที่ analyze
27+
if (app()->runningInConsole() &&
28+
(! app()->bound(DatabaseLoader::class) || app()->environment('testing'))) {
29+
return $this->table;
30+
}
31+
32+
try {
33+
return app(DatabaseLoader::class)->getWorkflowTransitionTableName();
34+
} catch (\Exception $e) {
35+
return $this->table;
36+
}
2537
}
2638

2739
public function workflow(): BelongsTo

src/WorkflowLoaderServiceProvider.php

Lines changed: 33 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,6 @@ class WorkflowLoaderServiceProvider extends PackageServiceProvider
1010
{
1111
public function configurePackage(Package $package): void
1212
{
13-
/*
14-
* This class is a Package Service Provider
15-
*
16-
* More info: https://github.com/spatie/laravel-package-tools
17-
*/
1813
$package
1914
->name('laravel-workflow-loader')
2015
->hasConfigFile('workflow_loader')
@@ -30,16 +25,41 @@ public function configurePackage(Package $package): void
3025

3126
public function packageRegistered()
3227
{
33-
$this->app->when(\Soap\WorkflowLoader\DatabaseLoader::class)
34-
->needs('$config')
35-
->give($this->app->make('config')->get('workflow_loader.loaders.database'));
28+
// Register DatabaseLoader with safe config retrieval
29+
$this->app->singleton(DatabaseLoader::class, function ($app) {
30+
$config = $app['config']->get('workflow_loader.loaders.database', []);
3631

37-
$this->app->when(\Soap\WorkflowLoader\WorkflowLoaderRegistry::class)
38-
->needs('$loaders')
39-
->give($this->app->make('config')->get('workflow_loader.loaders'));
32+
// Provide default config if not found
33+
if (empty($config) || ! isset($config['tableNames'])) {
34+
$config = [
35+
'tableNames' => [
36+
'workflows' => 'workflows',
37+
'workflow_states' => 'workflow_states',
38+
'workflow_transitions' => 'workflow_transitions',
39+
'workflow_state_transitions' => 'workflow_state_transitions',
40+
],
41+
];
42+
}
4043

41-
$this->app->bind(\Soap\WorkflowLoader\Contracts\WorkflowDatabaseLoader::class, \Soap\WorkflowLoader\DatabaseLoader::class);
44+
return new DatabaseLoader(
45+
$config,
46+
$app->make(Repositories\WorkflowRepository::class)
47+
);
48+
});
4249

43-
$this->app->singleton('workflowLoaderRegistry', \Soap\WorkflowLoader\WorkflowLoaderRegistry::class);
50+
// Register WorkflowLoaderRegistry
51+
$this->app->singleton(WorkflowLoaderRegistry::class, function ($app) {
52+
$loaders = $app['config']->get('workflow_loader.loaders', []);
53+
54+
return new WorkflowLoaderRegistry($loaders);
55+
});
56+
57+
// Bind contracts
58+
$this->app->bind(
59+
Contracts\WorkflowDatabaseLoader::class,
60+
DatabaseLoader::class
61+
);
62+
63+
$this->app->singleton('workflowLoaderRegistry', WorkflowLoaderRegistry::class);
4464
}
4565
}

0 commit comments

Comments
 (0)