Skip to content

Commit c4931a2

Browse files
committed
Update dependencies
1 parent f159748 commit c4931a2

File tree

6 files changed

+82
-57
lines changed

6 files changed

+82
-57
lines changed

config/workflow_loader.php

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
<?php
22

33
return [
4-
'databaseLoader' => [
5-
'tableNames' => [
6-
'workflows' => 'workflows',
7-
'workflow_states' => 'workflow_states',
8-
'workflow_transitions' => 'workflow_transitions',
9-
'workflow_state_transitions' => 'workflow_state_transitions',
10-
],
11-
'loaderClass' => \Soap\WorkflowLoader\DatabaseLoader::class,
4+
'loaders' => [
5+
'database' => [
6+
'tableNames' => [
7+
'workflows' => 'workflows',
8+
'workflow_states' => 'workflow_states',
9+
'workflow_transitions' => 'workflow_transitions',
10+
'workflow_state_transitions' => 'workflow_state_transitions',
11+
],
12+
'class' => \Soap\WorkflowLoader\DatabaseLoader::class,
13+
]
1214
],
13-
];
15+
];

src/Facades/WorkflowLoader.php renamed to src/Facades/WorkflowLoaderRegistry.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,6 @@ class WorkflowLoader extends Facade
1111
{
1212
protected static function getFacadeAccessor(): string
1313
{
14-
return \Soap\WorkflowLoader\WorkflowLoader::class;
14+
return \Soap\WorkflowLoader\WorkflowLoaderRegistry::class;
1515
}
1616
}

src/Repositories/WorkflowRepository.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ protected function makeWorkflowCofig($workflow): array
6464
return [
6565
$workflow->name => [
6666
'marking_store' => $workflow->marking_store,
67-
'type' => $workflow->type ?? 'workflow',
67+
'type' => $workflow->type ? $workflow->type->value : 'workflow',
6868
'metadata' => $workflow->metadata,
6969
'supports' => $workflow->supports,
7070
'places' => $places,

src/WorkflowLoader.php

Lines changed: 0 additions & 41 deletions
This file was deleted.

src/WorkflowLoaderRegistry.php

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
<?php
2+
3+
namespace Soap\WorkflowLoader;
4+
5+
use Soap\WorkflowLoader\Contracts\WorkflowLoader as WorkflowLoaderContract;
6+
7+
class WorkflowLoaderRegistry
8+
{
9+
protected array $loaders = [];
10+
11+
public function __construct(array $loaders)
12+
{
13+
foreach ($loaders as $key => $loader) {
14+
if (!isset($loader['class'])) {
15+
throw new \Exception("Key 'class' configuration not found in {$key} loader");
16+
}
17+
18+
if (!class_exists($loader['class'])) {
19+
throw new \Exception("Class {$loader['class']} not found");
20+
}
21+
$this->registerLoader($key, $loader->class);
22+
}
23+
}
24+
25+
public function registerLoader(string $name, WorkflowLoaderContract $loader)
26+
{
27+
$this->loaders[$name] = app()->make($loader);
28+
}
29+
30+
public function getLoaders(): array
31+
{
32+
return $this->loaders;
33+
}
34+
35+
public function getLoader(string $name): WorkflowLoaderContract
36+
{
37+
if (!isset($this->loaders[$name])) {
38+
throw new \Exception("Loader {$name} not found");
39+
}
40+
41+
return $this->loaders[$name];
42+
}
43+
44+
public function all(): array
45+
{
46+
if (count($this->loaders) === 0) {
47+
return [];
48+
}
49+
50+
$workflows = collect([]);
51+
foreach ($this->loaders as $name => $loader) {
52+
$workflows = $workflows->merge(collect($loader->all()));
53+
}
54+
55+
return $workflows->toArray();
56+
}
57+
}

src/WorkflowLoaderServiceProvider.php

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

55
use Soap\WorkflowLoader\Commands\WorkflowLoaderListCommand;
6+
use Soap\WorkflowLoader\WorkflowLoader;
67
use Spatie\LaravelPackageTools\Package;
78
use Spatie\LaravelPackageTools\PackageServiceProvider;
89

@@ -29,13 +30,19 @@ public function configurePackage(Package $package): void
2930
}
3031

3132
public function packageRegistered()
32-
{
33+
{
3334
$this->app->when(\Soap\WorkflowLoader\DatabaseLoader::class)
3435
->needs('$config')
35-
->give(config('workflow_loader.databaseLoader'));
36+
->give($this->app->make('config')->get('workflow_loader.loaders.database'));
37+
38+
$this->app->bind(\Soap\WorkflowLoader\Contracts\WorkflowDatabaseLoader::class, \Soap\WorkflowLoader\DatabaseLoader::class);
3639

37-
$this->app->singleton('workflow-loader', function ($app) {
38-
$workflowLoader = new WorkflowLoader($app->make(\Soap\WorkflowLoader\DatabaseLoader::class));
39-
});
40+
$this->app->when(WorkfloadLoaderRegistry::class)
41+
->needs('$loaders')
42+
->give(function ($app) {
43+
$loaders = $app->make('config')->get('workflow_loader.loaders');
44+
return $loaders;
45+
});
46+
4047
}
4148
}

0 commit comments

Comments
 (0)