From e839123255d852f8ac408bfa8bf6cda5f3efd00a Mon Sep 17 00:00:00 2001 From: Jean Boussier Date: Thu, 14 Nov 2024 12:32:23 +0100 Subject: [PATCH] DestroyStackJob: also delete commits Also use `dependent: :delete` rather than destroy for models that don't have an `after_destroy` callback. --- app/jobs/shipit/destroy_stack_job.rb | 3 +++ app/models/shipit/stack.rb | 14 +++++++------- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/app/jobs/shipit/destroy_stack_job.rb b/app/jobs/shipit/destroy_stack_job.rb index e120b0e9b..23c137b60 100644 --- a/app/jobs/shipit/destroy_stack_job.rb +++ b/app/jobs/shipit/destroy_stack_job.rb @@ -32,6 +32,9 @@ def perform(stack) delete(Shipit::OutputChunk.joins(:task).where(task: { stack_id: stack.id })) delete(Shipit::Task.where(stack_id: stack.id)) + + delete(Shipit::Commit.where(stack_id: stack.id)) + stack.destroy! end diff --git a/app/models/shipit/stack.rb b/app/models/shipit/stack.rb index 636ff18dc..5a53dbcd6 100644 --- a/app/models/shipit/stack.rb +++ b/app/models/shipit/stack.rb @@ -26,19 +26,19 @@ def blank? ENVIRONMENT_MAX_SIZE = 50 REQUIRED_HOOKS = %i(push status).freeze - has_many :commits, dependent: :destroy - has_many :merge_requests, dependent: :destroy - has_many :tasks, dependent: :destroy + has_many :commits, dependent: :delete_all + has_many :merge_requests, dependent: :delete_all + has_many :tasks, dependent: :delete_all has_many :deploys has_many :rollbacks has_many :deploys_and_rollbacks, -> { where(type: %w(Shipit::Deploy Shipit::Rollback)) }, class_name: 'Task', inverse_of: :stack - has_many :github_hooks, dependent: :destroy, class_name: 'Shipit::GithubHook::Repo' - has_many :hooks, dependent: :destroy - has_many :api_clients, dependent: :destroy - has_one :continuous_delivery_schedule + has_many :github_hooks, dependent: :delete_all, class_name: 'Shipit::GithubHook::Repo' + has_many :hooks, dependent: :delete_all + has_many :api_clients, dependent: :delete_all + has_one :continuous_delivery_schedule, dependent: :delete belongs_to :lock_author, class_name: :User, optional: true belongs_to :repository validates_associated :repository