Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
Size: Mime:
# frozen_string_literal: true

module Kiwi
  module Interactor
    # Kiwi Interactor Base 112
    class Base
      include Hanami::Interactor

      expose :logs, :exception

      def logs
        @logs ||= []
      end

      def logger
        @logger ||= SemanticLogger[self.class.name]
      end

      def sync!(method, exception)
        logs << method

        if !exception.nil?
          @exception = exception
          error! exception&.message
        end
        # raise exception unless exception.nil?
      end

      def validator(params)
        kclass = self.class.name.gsub('Interactors::', 'Validations::')
        klass = Hanami::Utils::Class.load(kclass)
        if klass.nil?
          sync! __method__,
                Kiwi::Interactor::Errors::ValidationClassMissing.new
        end

        @params = klass.new(params).validate

        return if @params.success?

        sync! __method__,
              Kiwi::Errors::RecordInvalid.new(@params)
      end

      def process_error(exception)
        @exception = exception
        error! exception.message
      end
    end
  end
end