Skip to content

Commit 9442303

Browse files
committed
Change from Loader (load only) to Storage (load and save)
1 parent e786a96 commit 9442303

16 files changed

+162
-41
lines changed

config/workflow-storage.php

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

33
return [
4-
'databaseLoader' => [
4+
'databaseStorage' => [
55
'tableNames' => [
66
'workflows' => 'workflows',
77
'workflow_states' => 'workflow_states',
88
'workflow_transitions' => 'workflow_transitions',
99
'workflow_state_transitions' => 'workflow_state_transitions',
1010
],
11-
//'loaderClass' => \Soap\WorkflowStorage\DatabaseLoader::class,
11+
'loaderClass' => \Soap\WorkflowStorage\DatabaseStorage::class,
1212
],
1313
];

database/factories/WorkflowFactory.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ class WorkflowFactory extends Factory
99
{
1010
protected $model = Workflow::class;
1111

12-
public function definition()
12+
public function definition(): array
1313
{
1414
return [
1515
'name' => $this->faker->name,

src/Contracts/WorkflowLoader.php renamed to src/Contracts/WorkflowDatabaseStorage.php

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,8 @@
22

33
namespace Soap\WorkflowStorage\Contracts;
44

5-
interface WorkflowLoader
5+
interface WorkflowDatabaseStorage extends WorkflowStorage
66
{
7-
public function load(string $workflowName): array;
8-
97
public function getWorkflowTableName(): string;
108

119
public function getWorkflowStateTableName(): string;

src/Contracts/WorkflowStorage.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<?php
2+
3+
namespace Soap\WorkflowStorage\Contracts;
4+
5+
interface WorkflowStorage
6+
{
7+
public function all(): array;
8+
9+
public function load(string $workflowName): array;
10+
}

src/DatabaseLoader.php renamed to src/DatabaseStorage.php

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,9 @@
22

33
namespace Soap\WorkflowStorage;
44

5-
use Soap\WorkflowStorage\Contracts\WorkflowLoader;
6-
use Soap\WorkflowStorage\Models\Workflow;
5+
use Soap\WorkflowStorage\Contracts\WorkflowDatabaseStorage;
76

8-
class DatabaseLoader implements WorkflowLoader
7+
class DatabaseStorage implements WorkflowDatabaseStorage
98
{
109
const KEY_TABLENAMES = 'tableNames';
1110

@@ -51,9 +50,13 @@ public function getWorkflowStateTransitionTableName(): string
5150

5251
public function load(string $workflowName): array
5352
{
54-
$workflow = Workflow::with(['states', 'transitions'])->where('name', $workflowName)->first();
55-
$config[$workflowName] = [];
53+
$workflowConfig = [];
5654

57-
return $config;
55+
return $workflowConfig;
56+
}
57+
58+
public function all(): array
59+
{
60+
return [];
5861
}
5962
}

src/Models/Workflow.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
use Illuminate\Database\Eloquent\Factories\HasFactory;
66
use Illuminate\Database\Eloquent\Model;
77
use Illuminate\Database\Eloquent\Relations\HasMany;
8-
use Soap\WorkflowStorage\DatabaseLoader;
8+
use Soap\WorkflowStorage\DatabaseStorage;
99
use Soap\WorkflowStorage\Enums\WorkflowTypeEnum;
1010

1111
class Workflow extends Model
@@ -22,7 +22,7 @@ class Workflow extends Model
2222

2323
public function getTable(): string
2424
{
25-
return app(DatabaseLoader::class)->getWorkflowTableName();
25+
return app(DatabaseStorage::class)->getWorkflowTableName();
2626
}
2727

2828
public function states(): HasMany

src/Models/WorkflowState.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
use Illuminate\Database\Eloquent\Factories\HasFactory;
66
use Illuminate\Database\Eloquent\Model;
77
use Illuminate\Database\Eloquent\Relations\BelongsTo;
8-
use Soap\WorkflowStorage\DatabaseLoader;
8+
use Soap\WorkflowStorage\DatabaseStorage;
99

1010
class WorkflowState extends Model
1111
{
@@ -21,7 +21,7 @@ class WorkflowState extends Model
2121

2222
public function getTable(): string
2323
{
24-
return app(DatabaseLoader::class)->getWorkflowStateTableName();
24+
return app(DatabaseStorage::class)->getWorkflowStateTableName();
2525
}
2626

2727
public function workflow(): BelongsTo

src/Models/WorkflowStateTransition.php

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
use Illuminate\Database\Eloquent\Factories\HasFactory;
66
use Illuminate\Database\Eloquent\Model;
77
use Illuminate\Database\Eloquent\Relations\BelongsTo;
8-
use Soap\WorkflowStorage\DatabaseLoader;
8+
use Soap\WorkflowStorage\DatabaseStorage;
99

1010
class WorkflowStateTransition extends Model
1111
{
@@ -19,7 +19,7 @@ class WorkflowStateTransition extends Model
1919

2020
public function getTable(): string
2121
{
22-
return app(DatabaseLoader::class)->getWorkflowStateTransitionTableName();
22+
return app(DatabaseStorage::class)->getWorkflowStateTransitionTableName();
2323
}
2424

2525
public function transition(): BelongsTo
@@ -31,9 +31,4 @@ public function fromState(): BelongsTo
3131
{
3232
return $this->belongsTo(WorkflowState::class, 'from_state_id');
3333
}
34-
35-
public function toState(): BelongsTo
36-
{
37-
return $this->belongsTo(WorkflowState::class, 'to_state_id');
38-
}
3934
}

src/Models/WorkflowTransition.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
use Illuminate\Database\Eloquent\Model;
77
use Illuminate\Database\Eloquent\Relations\BelongsTo;
88
use Illuminate\Database\Eloquent\Relations\HasMany;
9-
use Soap\WorkflowStorage\DatabaseLoader;
9+
use Soap\WorkflowStorage\DatabaseStorage;
1010

1111
class WorkflowTransition extends Model
1212
{
@@ -20,7 +20,7 @@ class WorkflowTransition extends Model
2020

2121
public function getTable(): string
2222
{
23-
return app(DatabaseLoader::class)->getWorkflowTransitionTableName();
23+
return app(DatabaseStorage::class)->getWorkflowTransitionTableName();
2424
}
2525

2626
public function workflow(): BelongsTo

src/Repositories/WorkflowRepository.php

Lines changed: 36 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,46 @@
66

77
class WorkflowRepository
88
{
9-
public function all()
9+
protected $model;
10+
11+
public function __construct(Workflow $model)
1012
{
11-
return [];
13+
$this->model = $model;
1214
}
1315

1416
public function find($id)
1517
{
16-
//$workflow = Workflow::with(['transitions.stateTransitions', 'states'])->find($id);
18+
$workflow = $this->model->with(['transitions', 'states'])->find($id);
19+
$places = $workflow->states->map(function ($state) {
20+
return $state->name;
21+
})->toArray();
22+
$transitions = $workflow->transitions->map(function ($transition) {
23+
return [
24+
$transition->name => [
25+
'from' => $transition->fromStates->map(function ($transitionState) {
26+
return $transitionState->fromState->name;
27+
})->toArray(),
28+
'to' => $transition->toState->name,
29+
],
30+
];
31+
})->toArray();
32+
33+
return [
34+
$workflow->name => [
35+
'supports' => $workflow->supports,
36+
'places' => $places,
37+
'transitions' => $transitions,
38+
],
39+
];
40+
}
41+
42+
public function findByName(string $name): array
43+
{
44+
$workflowId = $this->model->where('name', $name)->first()->id;
45+
if (! $workflowId) {
46+
return [];
47+
}
48+
49+
return $this->find($workflowId);
1750
}
1851
}

0 commit comments

Comments
 (0)