Class: SpreeCmCommissioner::Integrations::BookMeBusV1::Polling::SyncRouteStops

Inherits:
Object
  • Object
show all
Defined in:
app/services/spree_cm_commissioner/integrations/book_me_bus_v1/polling/sync_route_stops.rb

Overview

SyncRouteStops synchronizes route stops from BookMeBus trips

Structure follows SyncZones pattern:

  • initialize: Setup integration and sync_result

  • call: Main entry point, validates inputs, orchestrates sync

  • private methods: Implementation details

Instance Method Summary collapse

Constructor Details

#initialize(integration:, sync_result:, route:) ⇒ SyncRouteStops

Returns a new instance of SyncRouteStops.



9
10
11
12
13
14
# File 'app/services/spree_cm_commissioner/integrations/book_me_bus_v1/polling/sync_route_stops.rb', line 9

def initialize(integration:, sync_result:, route:)
  @integration = integration
  @sync_result = sync_result
  @route = route
  @location_mappings = {}
end

Instance Method Details

#call(external_trips:) ⇒ Object



16
17
18
19
20
21
22
# File 'app/services/spree_cm_commissioner/integrations/book_me_bus_v1/polling/sync_route_stops.rb', line 16

def call(external_trips:)
  raise SpreeCmCommissioner::Integrations::SyncError, 'external_trips is required' if external_trips.blank?
  raise SpreeCmCommissioner::Integrations::SyncError, 'route is required' if @route.blank?

  preload_location_mappings!
  sync_route_stops!(external_trips)
end