From b72f0b6b4078f938acd2d2163752b500b9367ede Mon Sep 17 00:00:00 2001 From: maxhutschenreiter Date: Mon, 21 Feb 2022 11:48:34 +0100 Subject: [PATCH 1/2] adding cascading delete to workflows. Because of the change of bigint to bigint usigned columns new package doctrine/dbal is needet --- composer.json | 3 +- ...022_02_21_173228_update_cascade_delete.php | 64 +++++++++++++++++++ src/Http/Controllers/WorkflowController.php | 7 +- 3 files changed, 72 insertions(+), 2 deletions(-) create mode 100644 database/migrations/2022_02_21_173228_update_cascade_delete.php diff --git a/composer.json b/composer.json index 229d7d8..b8d2817 100644 --- a/composer.json +++ b/composer.json @@ -19,7 +19,8 @@ "php": "^7.2|^8.0", "illuminate/support": "*", "barryvdh/laravel-dompdf": "^0.9.0", - "guzzlehttp/guzzle": "^7" + "guzzlehttp/guzzle": "^7", + "doctrine/dbal": "^3" }, "require-dev": { "orchestra/testbench": "^5.2", diff --git a/database/migrations/2022_02_21_173228_update_cascade_delete.php b/database/migrations/2022_02_21_173228_update_cascade_delete.php new file mode 100644 index 0000000..8c61590 --- /dev/null +++ b/database/migrations/2022_02_21_173228_update_cascade_delete.php @@ -0,0 +1,64 @@ +bigInteger('task_id')->unsigned()->change(); + $table->foreign('task_id')->references('id')->on('tasks')->onDelete('cascade'); + }); + + Schema::table(config('workflows.db_prefix').'tasks', function (Blueprint $table) { + $table->dropIndex(['workflow_id']); + $table->bigInteger('workflow_id')->unsigned()->change(); + $table->foreign('workflow_id')->references('id')->on('workflows')->onDelete('cascade'); + }); + + Schema::table(config('workflows.db_prefix').'triggers', function (Blueprint $table) { + $table->bigInteger('workflow_id')->unsigned()->change(); + $table->foreign('workflow_id')->references('id')->on('workflows')->onDelete('cascade'); + }); + + Schema::table(config('workflows.db_prefix').'workflow_logs', function (Blueprint $table) { + $table->bigInteger('workflow_id')->unsigned()->change(); + $table->foreign('workflow_id')->references('id')->on('workflows')->onDelete('cascade'); + }); + + + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table(config('workflows.db_prefix').'tasks', function (Blueprint $table) { + $table->dropForeign(['workflow_id']); + }); + + Schema::table(config('workflows.db_prefix').'triggers', function (Blueprint $table) { + $table->dropForeign(['workflow_id']); + }); + + Schema::table(config('workflows.db_prefix').'workflow_logs', function (Blueprint $table) { + $table->dropForeign(['workflow_id']); + }); + + Schema::table(config('workflows.db_prefix').'task_logs', function (Blueprint $table) { + $table->dropForeign(['task_id']); + }); + } +} diff --git a/src/Http/Controllers/WorkflowController.php b/src/Http/Controllers/WorkflowController.php index 9d5e214..098ce6d 100644 --- a/src/Http/Controllers/WorkflowController.php +++ b/src/Http/Controllers/WorkflowController.php @@ -57,11 +57,16 @@ public function update(Request $request, $id) return redirect(route('workflow.index')); } + /** + * Deletes the Workflow and over cascading also the Tasks, TaskLogs, WorkflowLogs and Triggers. + * + * @param $id + * @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector + */ public function delete($id) { $workflow = Workflow::find($id); - //TODO: delete all depending tasks? $workflow->delete(); return redirect(route('workflow.index')); From 9e3f9f66f05eeaa21be43a6f0c9a9b3ed16f8946 Mon Sep 17 00:00:00 2001 From: StyleCI Bot Date: Mon, 21 Feb 2022 10:48:45 +0000 Subject: [PATCH 2/2] Apply fixes from StyleCI --- .../migrations/2022_02_21_173228_update_cascade_delete.php | 3 --- 1 file changed, 3 deletions(-) diff --git a/database/migrations/2022_02_21_173228_update_cascade_delete.php b/database/migrations/2022_02_21_173228_update_cascade_delete.php index 8c61590..fd00cdf 100644 --- a/database/migrations/2022_02_21_173228_update_cascade_delete.php +++ b/database/migrations/2022_02_21_173228_update_cascade_delete.php @@ -13,7 +13,6 @@ class UpdateCascadeDelete extends Migration */ public function up() { - Schema::table(config('workflows.db_prefix').'task_logs', function (Blueprint $table) { $table->bigInteger('task_id')->unsigned()->change(); $table->foreign('task_id')->references('id')->on('tasks')->onDelete('cascade'); @@ -34,8 +33,6 @@ public function up() $table->bigInteger('workflow_id')->unsigned()->change(); $table->foreign('workflow_id')->references('id')->on('workflows')->onDelete('cascade'); }); - - } /**