Skip to content

Commit 068ddf2

Browse files
committed
Update table name provided by database loader class
1 parent 867a3f0 commit 068ddf2

11 files changed

+60
-54
lines changed

config/workflow_loader.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,6 @@
1010
'workflow_state_transitions' => 'workflow_state_transitions',
1111
],
1212
'class' => \Soap\WorkflowLoader\DatabaseLoader::class,
13-
]
13+
],
1414
],
15-
];
15+
];

database/migrations/wf1_create_workflows_table.php

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,20 +8,23 @@
88
{
99
public function up()
1010
{
11-
Schema::create('workflows', function (Blueprint $table) {
11+
$tableName = app(\Soap\WorkflowLoader\DatabaseLoader::class)->getWorkflowTableName();
12+
Schema::create($tableName, function (Blueprint $table) {
1213
$table->id();
1314
$table->string('name');
1415
$table->text('marking_store')->nullable()->comment('marking store as array');
1516
$table->string('type')->default('workflow')->comment('workflow or state_machine');
1617
$table->text('description')->nullable();
1718
$table->json('supports')->nullable()->comment('support models');
1819
$table->json('metadata')->nullable()->comment('metadata');
20+
$table->boolean('active')->default(true);
1921
$table->timestamps();
2022
});
2123
}
2224

2325
public function down()
2426
{
25-
Schema::dropIfExists('workflows');
27+
$tableName = app(\Soap\WorkflowLoader\DatabaseLoader::class)->getWorkflowTableName();
28+
Schema::dropIfExists($tableName);
2629
}
2730
};

database/migrations/wf2_create_workflow_states_table.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@
88
{
99
public function up()
1010
{
11-
Schema::create('workflow_states', function (Blueprint $table) {
11+
$tableName = app(\Soap\WorkflowLoader\DatabaseLoader::class)->getWorkflowStateTableName();
12+
Schema::create($tableName, function (Blueprint $table) {
1213
$table->id();
1314
$table->string('name');
1415
$table->tinyInteger('initial_state')->default(0)->comment('initial state');
@@ -21,6 +22,7 @@ public function up()
2122

2223
public function down()
2324
{
24-
Schema::dropIfExists('workflow_states');
25+
$tableName = app(\Soap\WorkflowLoader\DatabaseLoader::class)->getWorkflowStateTableName();
26+
Schema::dropIfExists($tableName);
2527
}
2628
};

database/migrations/wf3_create_workflow_transitions_table.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@
88
{
99
public function up()
1010
{
11-
Schema::create('workflow_transitions', function (Blueprint $table) {
11+
$tableName = app(\Soap\WorkflowLoader\DatabaseLoader::class)->getWorkflowTransitionTableName();
12+
Schema::create($tableName, function (Blueprint $table) {
1213
$table->id();
1314
$table->string('name');
1415
$table->foreignId('to_state_id')->constrained('workflow_states')->onDelete('cascade');
@@ -20,6 +21,7 @@ public function up()
2021

2122
public function down()
2223
{
23-
Schema::dropIfExists('workflow_transitions');
24+
$tableName = app(\Soap\WorkflowLoader\DatabaseLoader::class)->getWorkflowTransitionTableName();
25+
Schema::dropIfExists($tableName);
2426
}
2527
};

database/migrations/wf4_create_workflow_state_transitions_table.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@
88
{
99
public function up()
1010
{
11-
Schema::create('workflow_state_transitions', function (Blueprint $table) {
11+
$tableName = app(\Soap\WorkflowLoader\DatabaseLoader::class)->getWorkflowStateTransitionTableName();
12+
Schema::create($tableName, function (Blueprint $table) {
1213
$table->id();
1314
$table->foreignId('workflow_transition_id')->constrained('workflow_transitions')->onDelete('cascade');
1415
$table->foreignId('from_state_id')->constrained('workflow_states')->onDelete('cascade');
@@ -19,6 +20,7 @@ public function up()
1920

2021
public function down()
2122
{
22-
Schema::dropIfExists('workflow_state_transitions');
23+
$tableName = app(\Soap\WorkflowLoader\DatabaseLoader::class)->getWorkflowStateTransitionTableName();
24+
Schema::dropIfExists($tableName);
2325
}
2426
};

resources/stubs/WorkflowServiceProvider.php.stub

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,17 @@
33
namespace App\Providers;
44

55
use Illuminate\Support\ServiceProvider;
6-
use Soap\WorkflowLoader\DatabaseLoader;
76

87
class WorkflowServiceProvider extends ServiceProvider
98
{
10-
public function register()
11-
{
12-
13-
}
9+
public function register() {}
1410

1511
public function boot()
1612
{
17-
$registy = app()->make('workflow');
18-
$workflowLoader = app()->make('workflow-loader');
19-
foreach ($wokflowLoader->all() as $workflow => $config) {
20-
$registy->addFromArray($workflow, $config);
13+
$registry = app()->make('workflow');
14+
$workflowLoaderRegistry = app()->make('workflowLoaderRegistry');
15+
foreach ($workflowLoaderRegistry->all() as $workflow => $config) {
16+
$registry->addFromArray($workflow, $config);
2117
}
2218
}
2319
}

src/DatabaseLoader.php

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,15 @@ class DatabaseLoader implements WorkflowDatabaseLoader
1414
*/
1515
protected $config;
1616

17-
public function __construct(?array $config)
17+
protected $repo;
18+
19+
public function __construct(?array $config, WorkflowRepository $repo)
1820
{
1921
if (! isset($config[self::KEY_TABLE_NAMES])) {
2022
throw new \InvalidArgumentException('Table names not found in config');
2123
}
2224
$this->config = $config;
25+
$this->repo = $repo;
2326
}
2427

2528
public function getTableNames(): array
@@ -54,15 +57,15 @@ public function getWorkflowStateTransitionTableName(): string
5457

5558
public function load(string $workflowName): array
5659
{
57-
$repo = app()->make(WorkflowRepository::class);
60+
//$repo = app()->make(WorkflowRepository::class);
5861

59-
return $repo->findByName($workflowName);
62+
return $this->repo->findByName($workflowName);
6063
}
6164

6265
public function all(): array
6366
{
64-
$repo = app()->make(WorkflowRepository::class);
67+
//$repo = app()->make(WorkflowRepository::class);
6568

66-
return $repo->all();
69+
return $this->repo->all();
6770
}
6871
}

src/Facades/WorkflowLoaderRegistry.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@
77
/**
88
* @see \Soap\WorkflowLoader\WorkflowLoader
99
*/
10-
class WorkflowLoader extends Facade
10+
class WorkflowLoaderRegistry extends Facade
1111
{
1212
protected static function getFacadeAccessor(): string
1313
{
14-
return \Soap\WorkflowLoader\WorkflowLoaderRegistry::class;
14+
return 'workflowLoaderRegistry';
1515
}
1616
}

src/Repositories/WorkflowRepository.php

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -50,20 +50,19 @@ protected function makeWorkflowCofig($workflow): array
5050
return $state->name;
5151
})->toArray();
5252

53-
$transitions = $workflow->transitions->map(function ($transition) {
54-
return [
55-
$transition->name => [
56-
'from' => $transition->fromStates->map(function ($transitionState) {
57-
return $transitionState->fromState->name;
58-
})->toArray(),
59-
'to' => $transition->toState->name,
60-
],
53+
$transitions = [];
54+
foreach ($workflow->transitions as $transition) {
55+
$transitions[$transition->name] = [
56+
'from' => $transition->fromStates->map(function ($transitionState) {
57+
return $transitionState->fromState->name;
58+
})->toArray(),
59+
'to' => $transition->toState->name,
6160
];
62-
})->toArray();
61+
}
6362

6463
return [
6564
$workflow->name => [
66-
'marking_store' => $workflow->marking_store,
65+
'marking_store' => $workflow->marking_store ?? [],
6766
'type' => $workflow->type ? $workflow->type->value : 'workflow',
6867
'metadata' => $workflow->metadata,
6968
'supports' => $workflow->supports,

src/WorkflowLoaderRegistry.php

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,20 +11,20 @@ class WorkflowLoaderRegistry
1111
public function __construct(array $loaders)
1212
{
1313
foreach ($loaders as $key => $loader) {
14-
if (!isset($loader['class'])) {
14+
if (! isset($loader['class'])) {
1515
throw new \Exception("Key 'class' configuration not found in {$key} loader");
1616
}
1717

18-
if (!class_exists($loader['class'])) {
18+
if (! class_exists($loader['class'])) {
1919
throw new \Exception("Class {$loader['class']} not found");
2020
}
21-
$this->registerLoader($key, $loader->class);
21+
$this->registerLoader($key, app()->make($loader['class']));
2222
}
2323
}
2424

2525
public function registerLoader(string $name, WorkflowLoaderContract $loader)
2626
{
27-
$this->loaders[$name] = app()->make($loader);
27+
$this->loaders[$name] = $loader;
2828
}
2929

3030
public function getLoaders(): array
@@ -34,10 +34,10 @@ public function getLoaders(): array
3434

3535
public function getLoader(string $name): WorkflowLoaderContract
3636
{
37-
if (!isset($this->loaders[$name])) {
37+
if (! isset($this->loaders[$name])) {
3838
throw new \Exception("Loader {$name} not found");
3939
}
40-
40+
4141
return $this->loaders[$name];
4242
}
4343

@@ -47,11 +47,13 @@ public function all(): array
4747
return [];
4848
}
4949

50-
$workflows = collect([]);
50+
$workflows = [];
5151
foreach ($this->loaders as $name => $loader) {
52-
$workflows = $workflows->merge(collect($loader->all()));
52+
foreach ($loader->all() as $workflow => $config) {
53+
$workflows[$workflow] = $config;
54+
}
5355
}
5456

55-
return $workflows->toArray();
57+
return $workflows;
5658
}
5759
}

src/WorkflowLoaderServiceProvider.php

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
namespace Soap\WorkflowLoader;
44

55
use Soap\WorkflowLoader\Commands\WorkflowLoaderListCommand;
6-
use Soap\WorkflowLoader\WorkflowLoader;
76
use Spatie\LaravelPackageTools\Package;
87
use Spatie\LaravelPackageTools\PackageServiceProvider;
98

@@ -30,19 +29,17 @@ public function configurePackage(Package $package): void
3029
}
3130

3231
public function packageRegistered()
33-
{
32+
{
3433
$this->app->when(\Soap\WorkflowLoader\DatabaseLoader::class)
3534
->needs('$config')
3635
->give($this->app->make('config')->get('workflow_loader.loaders.database'));
3736

37+
$this->app->when(\Soap\WorkflowLoader\WorkflowLoaderRegistry::class)
38+
->needs('$loaders')
39+
->give($this->app->make('config')->get('workflow_loader.loaders'));
40+
3841
$this->app->bind(\Soap\WorkflowLoader\Contracts\WorkflowDatabaseLoader::class, \Soap\WorkflowLoader\DatabaseLoader::class);
3942

40-
$this->app->when(\Soap\WorkflowLoader\WorkfloadLoaderRegistry::class)
41-
->needs('$loaders')
42-
->give(function ($app) {
43-
$loaders = $app->make('config')->get('workflow_loader.loaders');
44-
return $loaders;
45-
});
46-
43+
$this->app->singleton('workflowLoaderRegistry', \Soap\WorkflowLoader\WorkflowLoaderRegistry::class);
4744
}
4845
}

0 commit comments

Comments
 (0)