29 lines
595 B
Ruby
29 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
|