Class: Workarea::IndexReleaseSchedulePreviews
- Inherits:
-
Object
- Object
- Workarea::IndexReleaseSchedulePreviews
- Defined in:
- app/services/workarea/index_release_schedule_previews.rb
Instance Attribute Summary collapse
-
#ends_at ⇒ Object
readonly
Returns the value of attribute ends_at.
-
#release ⇒ Object
readonly
Returns the value of attribute release.
-
#starts_at ⇒ Object
readonly
Returns the value of attribute starts_at.
Instance Method Summary collapse
- #affected_models ⇒ Object
- #affected_releases ⇒ Object
-
#initialize(release: nil, starts_at: nil, ends_at: nil) ⇒ IndexReleaseSchedulePreviews
constructor
A new instance of IndexReleaseSchedulePreviews.
- #perform ⇒ Object
Constructor Details
#initialize(release: nil, starts_at: nil, ends_at: nil) ⇒ IndexReleaseSchedulePreviews
Returns a new instance of IndexReleaseSchedulePreviews.
5 6 7 8 9 |
# File 'app/services/workarea/index_release_schedule_previews.rb', line 5 def initialize(release: nil, starts_at: nil, ends_at: nil) @release = release @starts_at = starts_at @ends_at = ends_at end |
Instance Attribute Details
#ends_at ⇒ Object (readonly)
Returns the value of attribute ends_at.
3 4 5 |
# File 'app/services/workarea/index_release_schedule_previews.rb', line 3 def ends_at @ends_at end |
#release ⇒ Object (readonly)
Returns the value of attribute release.
3 4 5 |
# File 'app/services/workarea/index_release_schedule_previews.rb', line 3 def release @release end |
#starts_at ⇒ Object (readonly)
Returns the value of attribute starts_at.
3 4 5 |
# File 'app/services/workarea/index_release_schedule_previews.rb', line 3 def starts_at @starts_at end |
Instance Method Details
#affected_models ⇒ Object
21 22 23 |
# File 'app/services/workarea/index_release_schedule_previews.rb', line 21 def affected_models affected_releases.flat_map(&:changesets).flat_map(&:releasable).compact end |
#affected_releases ⇒ Object
11 12 13 14 15 16 17 18 19 |
# File 'app/services/workarea/index_release_schedule_previews.rb', line 11 def affected_releases result = Release .scheduled(after: starts_at, before: ends_at) .includes(:changesets) .to_a result << release if release.present? result.uniq end |
#perform ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 |
# File 'app/services/workarea/index_release_schedule_previews.rb', line 25 def perform affected_releases.each do |release| affected_models.each do |releasable| Search::Storefront.new(releasable.in_release(release)).destroy # Different models have different indexing workers, running callbacks # ensures the appropriate worker is triggered releasable.run_callbacks(:save_release_changes) end end end |