Sha256: a91c43b1cf75ea48bb7c19042d5696ee4a39a7d64283e3f5dcbf03ee5d8009e0

Contents?: true

Size: 647 Bytes

Versions: 2

Compression:

Stored size: 647 Bytes

Contents

# frozen_string_literal: true

require_relative 'store_result'

module Repository
  module Support
    # Builds a successful or failed StoreResult depending on a record existing.
    class ResultBuilder
      def initialize(record)
        @record = record
      end

      def build(&_block)
        return successful_result if record
        failed_result yield(record)
      end

      private

      attr_reader :record

      def failed_result(errors)
        StoreResult::Failure.new errors
      end

      def successful_result
        StoreResult::Success.new record
      end
    end # class Repository::Support::ResultBuilder
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
repository-support-0.1.3 lib/repository/support/result_builder.rb
repository-support-0.1.1 lib/repository/support/result_builder.rb