Sha256: 4bcc2c0efc5e17c03a8a51a85d625c59b80e59bfa37fa284bc87d2e198050461

Contents?: true

Size: 1.16 KB

Versions: 2

Compression:

Stored size: 1.16 KB

Contents

# frozen_string_literal: true

module Api
  class BaseError < StandardError
    attr_reader :code, :message

    def initialize(error)
      @code = error[:code]
      @message = error[:message]
    end

    def serialize
      [{code: @code, message: @message}]
    end

    def to_hash
      {
        success: false,
        errors: serialize
      }
    end
  end

  class ExecuteFailed < BaseError
    attr_reader :type, :file_path, :i18n_scope

    def initialize(error_detail)
      error = I18n.t error_detail, scope: %i[errors action]
      @code = error[:code]
      @message = error[:message]
    end
  end

  module Error
    # TODO: define custom error class (extends the BaseError) here.
    class Runtime < ExecuteFailed
    end

    class RecordNotFound < BaseError
      attr_reader :error

      def initialize(error)
        @error = error
      end

      def to_hash
        RecordNotFoundSerializer.new(error).serialize
      end
    end

    class ActionNotAllowed < BaseError
      attr_reader :error

      def initialize(error)
        @error = error
      end

      def to_hash
        ActionNotAllowedSerializer.new(error).serialize
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
n_base_rails-0.1.2 lib/lib/api/error.rb
n_base_rails-0.1.1 lib/lib/api/error.rb