Class: WhittakerTech::Aeon::OverrideApplier
- Inherits:
-
Object
- Object
- WhittakerTech::Aeon::OverrideApplier
- Defined in:
- app/services/whittaker_tech/aeon/override_applier.rb
Overview
Stateless service that applies a surgical single-instance deviation to an Occurrence. Creates an Override row — either a cancellation or a replacement time range. Never triggers re-projection.
A DB unique index ensures at most one override per occurrence.
Class Method Summary collapse
-
.call(occurrence_id:, canceled: false, replacement_time_range: nil) ⇒ Override
The created override record.
Instance Method Summary collapse
-
#call ⇒ Override
Finds the occurrence, validates it, and creates the override.
-
#initialize(occurrence_id:, canceled:, replacement_time_range:) ⇒ OverrideApplier
constructor
A new instance of OverrideApplier.
Constructor Details
#initialize(occurrence_id:, canceled:, replacement_time_range:) ⇒ OverrideApplier
Returns a new instance of OverrideApplier.
36 37 38 39 40 |
# File 'app/services/whittaker_tech/aeon/override_applier.rb', line 36 def initialize(occurrence_id:, canceled:, replacement_time_range:) @occurrence_id = occurrence_id @canceled = canceled @replacement_time_range = replacement_time_range end |
Class Method Details
.call(occurrence_id:, canceled: false, replacement_time_range: nil) ⇒ Override
Returns the created override record.
23 24 25 26 27 28 29 30 31 |
# File 'app/services/whittaker_tech/aeon/override_applier.rb', line 23 def self.call(occurrence_id:, canceled: false, replacement_time_range: nil) raise ArgumentError, 'cannot cancel and replace simultaneously' if canceled && replacement_time_range new( occurrence_id: occurrence_id, canceled: canceled, replacement_time_range: replacement_time_range ).call end |
Instance Method Details
#call ⇒ Override
Finds the occurrence, validates it, and creates the override.
48 49 50 51 52 |
# File 'app/services/whittaker_tech/aeon/override_applier.rb', line 48 def call occurrence = find_occurrence! validate_occurrence!(occurrence) create_override!(occurrence) end |