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..fd00cdf --- /dev/null +++ b/database/migrations/2022_02_21_173228_update_cascade_delete.php @@ -0,0 +1,61 @@ +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'));