Module: PlanMyStuff::Pipeline::CompletedSweep
- Defined in:
- lib/plan_my_stuff/pipeline/completed_sweep.rb
Overview
Removes pipeline project items that have been at Completed for longer than the configured TTL.
Driven by RemindersSweepJob so the gem ships one scheduled entrypoint. Items are removed via Pipeline.remove! so subscribers see the standard pipeline_removed.plan_my_stuff event.
Class Method Summary collapse
Class Method Details
.perform!(project_number: nil, now: Time.current) ⇒ Array<PlanMyStuff::ProjectItem>
Runs the sweep. No-op when configuration.pipeline_completion_purge_enabled is false.
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/plan_my_stuff/pipeline/completed_sweep.rb', line 23 def perform!(project_number: nil, now: Time.current) config = PlanMyStuff.configuration return [] unless config.pipeline_completion_purge_enabled number = PlanMyStuff::Pipeline.resolve_pipeline_project_number!(project_number) project = PlanMyStuff::Project.find(number) completed_status = PlanMyStuff::Pipeline.resolve_status_name( PlanMyStuff::Pipeline::Status::COMPLETED, ) ttl = config.pipeline_completion_ttl_hours.hours candidates = project.items.select do |item| item.status == completed_status && item.updated_at.present? && item.updated_at + ttl < now end candidates.each { |item| PlanMyStuff::Pipeline.remove!(item) } candidates end |