# 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