Initial commit

This commit is contained in:
Senad Uka
2022-03-23 05:44:42 +01:00
parent 1405281a5c
commit eea10dd03b
113 changed files with 3617 additions and 81 deletions

View File

@@ -0,0 +1,44 @@
# frozen_string_literal: true
require_relative '../log/loggable'
require_relative 'errors'
require_relative 'publish_schedule'
require_relative 'process_schedule'
require_relative 'fetch_schedule'
module SchedulePipeline
# Schedule Processing Pipeline
class SchedulePipeline
include Log::Loggable
def initialize(queue_factory)
errors = Errors.new
processed_schedules_queue = queue_factory.for_name(:processed_schedules)
publish_schedule = PublishSchedule.new(processed_schedules_queue, errors)
unprocessed_schedules_queue = queue_factory.for_name(:unprocessed_schedules)
process_schedule = ProcessSchedule.new(unprocessed_schedules_queue, processed_schedules_queue, errors)
fetch_schedule_queue = queue_factory.for_name(:fetch_vendor_schedules)
fetch_schedule = FetchSchedule.new(fetch_schedule_queue, unprocessed_schedules_queue, errors)
@queues = [processed_schedules_queue, unprocessed_schedules_queue, fetch_schedule_queue]
@stages = [publish_schedule, process_schedule, fetch_schedule]
end
def start
stages.each(&:start)
logger.info "Started Schedule Pipeline"
end
def stop
stages.reverse_each(&:stop)
end
private
def stages
@stages
end
def queues
@queues
end
end
end