lib/eco/api/session.rb in eco-helpers-0.9.2 vs lib/eco/api/session.rb in eco-helpers-0.9.3

- old
+ new

@@ -1,9 +1,9 @@ module Eco module API class Session < Common::Session::BaseSession - attr_reader :batch, :job_groups + attr_reader :batch attr_reader :usecases attr_accessor :schema def initialize(init = {}) e = init @@ -14,16 +14,12 @@ logger.debug("LINE COMMAND: #{$0} #{ARGV.join(" ")}") @batch = Batch.new(enviro) @task = Task.new(enviro) - @job_groups = JobGroups.new(enviro) - @usecases = Eco::API::UseCases::DefaultCases.new.merge(config.usecases) - self.schema = config.people.default_schema || schemas.first - @policy_groups = config.policy_groups presets_custom_file = config.people.presets_custom presets_map_file = config.people.presets_map @presets_factory = Eco::API::Organization::PresetsFactory.new({ @@ -110,10 +106,14 @@ else @presets_factory.new(input) end end + def export(*args) + @entry_factory.export(*args) + end + def new_person(**keyed_args) @person_factory.new(**keyed_args) end def new_entry(data, dependencies: {}) @@ -124,31 +124,44 @@ @entry_factory.entries(*args).tap do |collection| logger.info("Loaded #{collection.length} input entries.") end end - def export(*args) - @entry_factory.export(*args) - end - def csv_entries(file) return entries(file: file, format: :csv) end def discarded_entries + return @discarded_entries if instance_variable_defined?(:@discarded_entries) file = config.people.discarded_file file = file_manager.dir.file(file) - csv_entries(file) + @discarded_entries = csv_entries(file) end - def process_case(name, type: nil, **params) + def workflow(io:) + config.workflow.tap do |wf| + yield(wf, io) if block_given? + end + end + + def usecases + @usecases ||= Eco::API::UseCases::DefaultCases.new.merge(config.usecases) + end + + def post_launch + @post_launch ||= config.post_launch.select(usecases) + end + + def process_case(name, io: nil, type: nil, **params) args = { session: self }.merge(params) - fatal("Undefined usecase '#{name}' of type '#{type.to_s}'") if !usecases.defined?(name, type: type) - logger.debug("Session: going to process '#{name}' defined case") - usecases.case(name, type: type).launch(**args) + usecases.case(name, type: type).launch(io: io, **args) end + def job_groups + @job_groups ||= Batch::JobsGroups.new(enviro) + end + def job_group(name, order: :last) case when job_groups.exists?(name) job_groups[name] else @@ -164,10 +177,6 @@ end end require_relative 'session/config' require_relative 'session/batch' -require_relative 'session/batch_status' require_relative 'session/task' -require_relative 'session/batch_job' -require_relative 'session/batch_jobs' -require_relative 'session/job_groups'