Sha256: 4b78505b9b74e937db3bcbdf81af4a426f1a5a91179f48c9d33b5c9dcd87911a

Contents?: true

Size: 1.65 KB

Versions: 1

Compression:

Stored size: 1.65 KB

Contents

# frozen_string_literal: true

module ConvenientService
  module Service
    module Plugins
      module HasResult
        module Entities
          class Result
            module Concern
              ##
              # TODO: How to use concern outside?
              #
              module InstanceMethods
                include Support::Delegate
                include Support::Copyable

                delegate \
                  :service,
                  :status,
                  :data,
                  :message,
                  :code,
                  to: :params

                delegate \
                  :success?,
                  :failure?,
                  :error?,
                  :not_success?,
                  :not_failure?,
                  :not_error?,
                  to: :status

                def initialize(**params)
                  @params = Commands::CastResultParams.call(params: params)
                end

                def ==(other)
                  return unless other.instance_of?(self.class)

                  return false if service.class != other.service.class
                  return false if status != other.status
                  return false if data != other.data
                  return false if message != other.message
                  return false if code != other.code

                  true
                end

                def to_kwargs
                  {service: service, status: status, data: data, message: message, code: code}
                end

                private

                attr_reader :params
              end
            end
          end
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
convenient_service-0.1.0 lib/convenient_service/service/plugins/has_result/entities/result/concern/instance_methods.rb