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 |