jdickey/repository-support

View on GitHub
lib/repository/support/result_builder.rb

Summary

Maintainability
A
0 mins
Test Coverage
# 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