diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index a6bc80c..deb2a12 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -1,11 +1,11 @@ blank_issues_enabled: false contact_links: - name: Ask a question - url: https://github.com/soap/laravel-workflow-storage/discussions/new?category=q-a + url: https://github.com/soap/laravel-workflow-loader/discussions/new?category=q-a about: Ask the community for help - name: Request a feature - url: https://github.com/soap/laravel-workflow-storage/discussions/new?category=ideas + url: https://github.com/soap/laravel-workflow-loader/discussions/new?category=ideas about: Share ideas for new features - name: Report a security issue - url: https://github.com/soap/laravel-workflow-storage/security/policy + url: https://github.com/soap/laravel-workflow-loader/security/policy about: Learn how to notify us for sensitive bugs diff --git a/.github/workflows/run-tests.yml b/.github/workflows/run-tests.yml index 19d6917..4be470c 100644 --- a/.github/workflows/run-tests.yml +++ b/.github/workflows/run-tests.yml @@ -47,7 +47,7 @@ jobs: env: DB_USERNAME: root DB_PASSWORD: root - DB_DATABASE: workflow_storage_testing + DB_DATABASE: workflow_loader_testing run: | sudo /etc/init.d/mysql start mysql -e 'CREATE DATABASE ${{ env.DB_DATABASE }};' -u${{ env.DB_USERNAME }} -p${{ env.DB_PASSWORD }} diff --git a/CHANGELOG.md b/CHANGELOG.md index a604c05..42b3b35 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,3 @@ # Changelog -All notable changes to `laravel-workflow-storage` will be documented in this file. +All notable changes to `laravel-workflow-loader` will be documented in this file. diff --git a/README.md b/README.md index 9c6a091..08cbf15 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,10 @@ -# Database storage for Laravel workflow configuration +# Database Loader for Laravel workflow configuration -[![Latest Version on Packagist](https://img.shields.io/packagist/v/soap/laravel-workflow-storage.svg?style=flat-square)](https://packagist.org/packages/soap/laravel-workflow-storage) -[![GitHub Tests Action Status](https://img.shields.io/github/actions/workflow/status/soap/laravel-workflow-storage/run-tests.yml?branch=main&label=tests&style=flat-square)](https://github.com/soap/laravel-workflow-storage/actions?query=workflow%3Arun-tests+branch%3Amain) -[![PHPStan](https://github.com/soap/laravel-workflow-storage/actions/workflows/phpstan.yml/badge.svg)](https://github.com/soap/laravel-workflow-storage/actions/workflows/phpstan.yml) -[![GitHub Code Style Action Status](https://img.shields.io/github/actions/workflow/status/soap/laravel-workflow-storage/fix-php-code-style-issues.yml?branch=main&label=code%20style&style=flat-square)](https://github.com/soap/laravel-workflow-storage/actions?query=workflow%3A"Fix+PHP+code+style+issues"+branch%3Amain) -[![Total Downloads](https://img.shields.io/packagist/dt/soap/laravel-workflow-storage.svg?style=flat-square)](https://packagist.org/packages/soap/laravel-workflow-storage) +[![Latest Version on Packagist](https://img.shields.io/packagist/v/soap/laravel-workflow-loader.svg?style=flat-square)](https://packagist.org/packages/soap/laravel-workflow-loader) +[![GitHub Tests Action Status](https://img.shields.io/github/actions/workflow/status/soap/laravel-workflow-loader/run-tests.yml?branch=main&label=tests&style=flat-square)](https://github.com/soap/laravel-workflow-loader/actions?query=workflow%3Arun-tests+branch%3Amain) +[![PHPStan](https://github.com/soap/laravel-workflow-loader/actions/workflows/phpstan.yml/badge.svg)](https://github.com/soap/laravel-workflow-loader/actions/workflows/phpstan.yml) +[![GitHub Code Style Action Status](https://img.shields.io/github/actions/workflow/status/soap/laravel-workflow-loader/fix-php-code-style-issues.yml?branch=main&label=code%20style&style=flat-square)](https://github.com/soap/laravel-workflow-loader/actions?query=workflow%3A"Fix+PHP+code+style+issues"+branch%3Amain) +[![Total Downloads](https://img.shields.io/packagist/dt/soap/laravel-workflow-loader.svg?style=flat-square)](https://packagist.org/packages/soap/laravel-workflow-loader) This package extends [zerodahero/laravel-workflow](https://github.com/zerodahero/laravel-workflow) by adding option to store workflow configuration in database. Laravel workflow only support loading configuration form Laravel configuration. This package provides user to change workflow configuration without helping from developers. @@ -16,20 +16,20 @@ This package extends [zerodahero/laravel-workflow](https://github.com/zerodahero You can install the package via composer: ```bash -composer require soap/laravel-workflow-storage +composer require soap/laravel-workflow-loader ``` You can publish and run the migrations with: ```bash -php artisan vendor:publish --tag="workflow-storage-migrations" +php artisan vendor:publish --tag="workflow-loader-migrations" php artisan migrate ``` You can publish the config file with: ```bash -php artisan vendor:publish --tag="workflow-storage-config" +php artisan vendor:publish --tag="workflow-loader-config" ``` This is the contents of the published config file: diff --git a/canvas.yaml b/canvas.yaml index 1ee869f..215bfbd 100644 --- a/canvas.yaml +++ b/canvas.yaml @@ -1,6 +1,6 @@ preset: package -namespace: Soap\WorkflowStorage +namespace: Soap\WorkflowLoader user-auth-model: paths: @@ -15,13 +15,13 @@ migration: prefix: '' console: - namespace: Soap\WorkflowStorage\Console + namespace: Soap\WorkflowLoader\Console model: - namespace: Soap\WorkflowStorage\Models + namespace: Soap\WorkflowLoader\Models provider: - namespace: Soap\WorkflowStorage\Providers + namespace: Soap\WorkflowLoader\Providers testing: - namespace: Soap\WorkflowStorage\Tests + namespace: Soap\WorkflowLoader\Tests diff --git a/composer.json b/composer.json index b672ddc..9a7962e 100644 --- a/composer.json +++ b/composer.json @@ -1,12 +1,12 @@ { - "name": "soap/laravel-workflow-storage", - "description": "This is my package laravel-workflow-storage", + "name": "soap/laravel-workflow-loader", + "description": "This is my package laravel-workflow-loader", "keywords": [ "Soap", "laravel", - "laravel-workflow-storage" + "laravel-workflow-loader" ], - "homepage": "https://github.com/soap/laravel-workflow-storage", + "homepage": "https://github.com/soap/laravel-workflow-loader", "license": "MIT", "authors": [ { @@ -37,20 +37,20 @@ }, "autoload": { "psr-4": { - "Soap\\WorkflowStorage\\": "src/", - "Soap\\WorkflowStorage\\Database\\Factories\\": "database/factories/" + "Soap\\WorkflowLoader\\": "src/", + "Soap\\WorkflowLoader\\Database\\Factories\\": "database/factories/" } }, "autoload-dev": { "psr-4": { - "Soap\\WorkflowStorage\\Tests\\": "tests/", + "Soap\\WorkflowLoader\\Tests\\": "tests/", "Workbench\\App\\": "workbench/app/", "Workbench\\Database\\Factories\\": "workbench/database/factories/" } }, "scripts": { "post-autoload-dump": "@composer run prepare", - "clear": "@php vendor/bin/testbench package:purge-laravel-workflow-storage --ansi", + "clear": "@php vendor/bin/testbench package:purge-laravel-workflow-loader --ansi", "prepare": "@php vendor/bin/testbench package:discover --ansi", "build": [ "@composer run prepare", @@ -76,10 +76,10 @@ "extra": { "laravel": { "providers": [ - "Soap\\WorkflowStorage\\WorkflowStorageServiceProvider" + "Soap\\WorkflowLoader\\WorkflowLoaderServiceProvider" ], "aliases": { - "WorkflowStorage": "Soap\\WorkflowStorage\\Facades\\WorkflowStorage" + "WorkflowLoader": "Soap\\WorkflowLoader\\Facades\\WorkflowLoader" } } }, diff --git a/config/workflow-storage.php b/config/workflow_loader.php similarity index 74% rename from config/workflow-storage.php rename to config/workflow_loader.php index 73b6b3a..37c7e71 100644 --- a/config/workflow-storage.php +++ b/config/workflow_loader.php @@ -1,13 +1,13 @@ [ + 'databaseLoader' => [ 'tableNames' => [ 'workflows' => 'workflows', 'workflow_states' => 'workflow_states', 'workflow_transitions' => 'workflow_transitions', 'workflow_state_transitions' => 'workflow_state_transitions', ], - 'loaderClass' => \Soap\WorkflowStorage\DatabaseStorage::class, + 'loaderClass' => \Soap\WorkflowLoader\DatabaseLoader::class, ], ]; diff --git a/database/factories/WorkflowFactory.php b/database/factories/WorkflowFactory.php index b5d93c2..c848cb3 100644 --- a/database/factories/WorkflowFactory.php +++ b/database/factories/WorkflowFactory.php @@ -1,9 +1,9 @@ id; + $workflowId = is_int($workflow) ? $workflow : $workflow->getKey(); return $this->state(function (array $attributes) use ($workflowId) { return [ diff --git a/database/factories/WorkflowTransitionFactory.php b/database/factories/WorkflowTransitionFactory.php index 92e87ce..eb5368e 100644 --- a/database/factories/WorkflowTransitionFactory.php +++ b/database/factories/WorkflowTransitionFactory.php @@ -1,9 +1,9 @@ - + diff --git a/resources/stubs/WorkflowServiceProvider.php.stub b/resources/stubs/WorkflowServiceProvider.php.stub index 62a8a90..94c4cde 100644 --- a/resources/stubs/WorkflowServiceProvider.php.stub +++ b/resources/stubs/WorkflowServiceProvider.php.stub @@ -3,7 +3,7 @@ namespace App\Providers; use Illuminate\Support\ServiceProvider; -use Soap\WorkflowStorage\DatabaseLoader; +use Soap\WorkflowLoader\DatabaseLoader; class WorkflowServiceProvider extends ServiceProvider { @@ -15,7 +15,7 @@ class WorkflowServiceProvider extends ServiceProvider public function boot() { $registy = app()->make('workflow'); - $workflowLoader = app()->make('workflow-storage'); + $workflowLoader = app()->make('workflow-loader'); foreach ($wokflowLoader->all() as $workflow => $config) { $registy->addFromArray($workflow, $config); } diff --git a/src/Commands/WorkflowStorageListCommand.php b/src/Commands/WorkflowLoaderListCommand.php similarity index 59% rename from src/Commands/WorkflowStorageListCommand.php rename to src/Commands/WorkflowLoaderListCommand.php index f2363a5..0873cf7 100644 --- a/src/Commands/WorkflowStorageListCommand.php +++ b/src/Commands/WorkflowLoaderListCommand.php @@ -1,12 +1,12 @@ config = $config; } public function getTableNames(): array { - return $this->config[self::KEY_TABLENAMES]; + return $this->config[self::KEY_TABLE_NAMES]; } public function getTableName(string $name): string diff --git a/src/Enums/WorkflowTypeEnum.php b/src/Enums/WorkflowTypeEnum.php index 4fb4e3d..f3d9b47 100644 --- a/src/Enums/WorkflowTypeEnum.php +++ b/src/Enums/WorkflowTypeEnum.php @@ -1,6 +1,6 @@ getWorkflowTableName(); + return app(DatabaseLoader::class)->getWorkflowTableName(); } public function states(): HasMany diff --git a/src/Models/WorkflowState.php b/src/Models/WorkflowState.php index 2d2a754..1169b0c 100644 --- a/src/Models/WorkflowState.php +++ b/src/Models/WorkflowState.php @@ -1,11 +1,11 @@ getWorkflowStateTableName(); + return app(DatabaseLoader::class)->getWorkflowStateTableName(); } public function workflow(): BelongsTo diff --git a/src/Models/WorkflowStateTransition.php b/src/Models/WorkflowStateTransition.php index ecb61d5..72b1228 100644 --- a/src/Models/WorkflowStateTransition.php +++ b/src/Models/WorkflowStateTransition.php @@ -1,11 +1,11 @@ getWorkflowStateTransitionTableName(); + return app(DatabaseLoader::class)->getWorkflowStateTransitionTableName(); } public function transition(): BelongsTo diff --git a/src/Models/WorkflowTransition.php b/src/Models/WorkflowTransition.php index 6c9d9a1..04ac77d 100644 --- a/src/Models/WorkflowTransition.php +++ b/src/Models/WorkflowTransition.php @@ -1,12 +1,12 @@ getWorkflowTransitionTableName(); + return app(DatabaseLoader::class)->getWorkflowTransitionTableName(); } public function workflow(): BelongsTo diff --git a/src/Repositories/WorkflowRepository.php b/src/Repositories/WorkflowRepository.php index 0741778..e5dc50a 100644 --- a/src/Repositories/WorkflowRepository.php +++ b/src/Repositories/WorkflowRepository.php @@ -1,8 +1,8 @@ registerLoader($loader); } } - public function registerLoader(WorkflowStorageContract $loader) + public function registerLoader(WorkflowLoaderContract $loader) { $this->loaders[$loader::class] = $loader; } - public function getLoader(string $loader): WorkflowStorageContract + public function getLoader(string $loader): WorkflowLoaderContract { return $this->loaders[$loader]; } diff --git a/src/WorkflowStorageServiceProvider.php b/src/WorkflowLoaderServiceProvider.php similarity index 52% rename from src/WorkflowStorageServiceProvider.php rename to src/WorkflowLoaderServiceProvider.php index 44cde99..0683dcb 100644 --- a/src/WorkflowStorageServiceProvider.php +++ b/src/WorkflowLoaderServiceProvider.php @@ -1,12 +1,12 @@ name('laravel-workflow-storage') - ->hasConfigFile() + ->name('laravel-workflow-loader') + ->hasConfigFile('workflow_loader') ->hasMigrations([ 'wf1_create_workflows_table', 'wf2_create_workflow_states_table', 'wf3_create_workflow_transitions_table', 'wf4_create_workflow_state_transitions_table', ]) - ->hasCommand(WorkflowStorageListCommand::class) + ->hasCommand(WorkflowLoaderListCommand::class) ->publishesServiceProvider('WorkflowServiceProvider'); } public function packageRegistered() { - $this->app->singleton('workflow-storage', function ($app) { - $workflowStorage = new WorkflowStorage($app->make(DatabaseStorage::class)); - }); - - $this->app->singleton(DatabaseStorage::class, function ($app) { - $config = $app->make('config')->get('workflow-storage.databaseStorage', []); + $this->app->when(\Soap\WorkflowLoader\DatabaseLoader::class) + ->needs('$config') + ->give(config('workflow_loader.databaseLoader')); - return new DatabaseStorage(config: $config); + $this->app->singleton('workflow-loader', function ($app) { + $workflowLoader = new WorkflowLoader($app->make(\Soap\WorkflowLoader\DatabaseLoader::class)); }); - } } diff --git a/tests/Feature/WorkflowStorageTest.php b/tests/Feature/WorkflowStorageTest.php index 420bd95..0e96a98 100644 --- a/tests/Feature/WorkflowStorageTest.php +++ b/tests/Feature/WorkflowStorageTest.php @@ -1,8 +1,8 @@ in(__DIR__); diff --git a/tests/TestCase.php b/tests/TestCase.php index c4d09d9..c598058 100644 --- a/tests/TestCase.php +++ b/tests/TestCase.php @@ -1,13 +1,13 @@ create([ diff --git a/tests/Unit/WorkflowStateModelTest.php b/tests/Unit/WorkflowStateModelTest.php index f204f81..aae9765 100644 --- a/tests/Unit/WorkflowStateModelTest.php +++ b/tests/Unit/WorkflowStateModelTest.php @@ -1,7 +1,7 @@ create(); diff --git a/tests/Unit/WorkflowTransitionModelTest.php b/tests/Unit/WorkflowTransitionModelTest.php index 7b7727b..052df5b 100644 --- a/tests/Unit/WorkflowTransitionModelTest.php +++ b/tests/Unit/WorkflowTransitionModelTest.php @@ -1,8 +1,8 @@ create();