28 lines
595 B
Ruby
28 lines
595 B
Ruby
# frozen_string_literal: true
|
|
|
|
module Todos
|
|
module Destroy
|
|
# Service class for deleting todos that belongs to a deleted/archived design.
|
|
class DesignService
|
|
attr_reader :design_ids
|
|
|
|
def initialize(design_ids)
|
|
@design_ids = design_ids
|
|
end
|
|
|
|
def execute
|
|
todos.delete_all
|
|
end
|
|
|
|
private
|
|
|
|
def todos
|
|
Todo.for_target(deleted_designs.select(:design_id)).for_type(DesignManagement::Design)
|
|
end
|
|
|
|
def deleted_designs
|
|
DesignManagement::Action.by_design(design_ids).by_event(:deletion)
|
|
end
|
|
end
|
|
end
|
|
end
|