lib/legion/extensions/transformer/runners/transform.rb in lex-transformer-0.1.3 vs lib/legion/extensions/transformer/runners/transform.rb in lex-transformer-0.1.4

- old
+ new

@@ -1,30 +1,33 @@ require 'tilt' module Legion::Extensions::Transformer module Runners - class Transform - extend Legion::Extensions::Helpers::Lex - extend Legion::Extensions::Helpers::Task + module Transform + def transform(transformation:, **payload) + if transformation.include?('<%') || transformation.include?('%>') + template = Tilt['erb'].new { transformation } + variables = { **payload } + variables[:crypt] = Legion::Crypt if transformation.include? 'crypt' + variables[:settings] = Legion::Settings if transformation.include? 'settings' + variables[:cache] = Legion::Cache if transformation.include? 'cache' + if payload.key?(:task_id) && transformation.include?('task') + variables[:task] = Legion::Data::Model::Task[payload[:task_id]] + end - def self.transform(transformation:, **payload) - template = Tilt['erb'].new { transformation } - variables = { **payload } - variables[:crypt] = Legion::Crypt if transformation.include? 'crypt' - variables[:settings] = Legion::Settings if transformation.include? 'settings' - variables[:cache] = Legion::Cache if transformation.include? 'cache' - if payload.key?(:task_id) && transformation.include?('task') - variables[:task] = Legion::Data::Model::Task[payload[:task_id]] + payload[:args] = from_json(template.render(self, variables)) + else + payload[:args] = from_json(transformation) end - payload[:args] = from_json(template.render(self, variables)) case payload[:args] when Hash unless payload[:task_id].nil? task_update(payload[:task_id], 'transformer.succeeded', function_args: payload[:args]) end send_task(**payload) + task_update(payload[:task_id], 'task.queued', use_database: false) unless payload[:task_id].nil? when Array payload[:args].each do |thing| new_payload = payload task = Legion::Runner::Status.generate_task_id(function_args: thing, status: 'task.queued', @@ -39,23 +42,25 @@ 'task.multiplied', function_args: payload[:args]) end end - task_update(payload[:task_id], 'task.queued') unless payload[:task_id].nil? if payload[:debug] && payload.key?(:task_id) generate_task_log(task_id: payload[:task_id], function: 'transform', values: payload) end { success: true, **payload } end - def self.send_task(**opts) + def send_task(**opts) payload = {} %i[task_id relationship_id trigger_function_id runner_class function_id function chain_id debug args].each do |thing| # rubocop:disable Layout/LineLength payload[thing] = opts[thing] if opts.key? thing end Legion::Extensions::Transformer::Transport::Messages::Message.new(**payload).publish end + + include Legion::Extensions::Helpers::Lex + extend Legion::Extensions::Helpers::Task end end end