Sha256: 2013d96a27ce81921c3baaae3517b1b833eeaf71fc08cd2c5fc3e3c5e4a72bee

Contents?: true

Size: 816 Bytes

Versions: 20

Compression:

Stored size: 816 Bytes

Contents

require 'active_support'

class LHS::Service

  module Find
    extend ActiveSupport::Concern

    module ClassMethods

      # Find a single uniqe record
      def find(args)
        if args.is_a? Hash
          find_with_parameters(args)
        else
          find_by_id(args)
        end
      end

      private

      def find_with_parameters(params)
        data = instance.request(params: params)
        if data._proxy.is_a?(LHS::Collection)
          fail LHC::NotFound.new('Requested unique item. Multiple were found.', data._request.response) if data.count > 1
          data.first || fail(LHC::NotFound.new('No item was found.', data._request.response))
        else
          data
        end
      end

      def find_by_id(id)
        instance.request(params: { id: id })
      end
    end
  end
end

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
lhs-1.6.1 lib/lhs/concerns/service/find.rb
lhs-1.6.0 lib/lhs/concerns/service/find.rb
lhs-2.0.5 lib/lhs/concerns/service/find.rb
lhs-2.0.4 lib/lhs/concerns/service/find.rb
lhs-2.0.3 lib/lhs/concerns/service/find.rb
lhs-2.0.2 lib/lhs/concerns/service/find.rb
lhs-2.0.1 lib/lhs/concerns/service/find.rb
lhs-2.0.0 lib/lhs/concerns/service/find.rb
lhs-1.5.0 lib/lhs/concerns/service/find.rb
lhs-1.4.0 lib/lhs/concerns/service/find.rb
lhs-1.3.1 lib/lhs/concerns/service/find.rb
lhs-1.3.0 lib/lhs/concerns/service/find.rb
lhs-1.2.3 lib/lhs/concerns/service/find.rb
lhs-1.2.2 lib/lhs/concerns/service/find.rb
lhs-1.2.1 lib/lhs/concerns/service/find.rb
lhs-1.2.0 lib/lhs/concerns/service/find.rb
lhs-1.1.0 lib/lhs/concerns/service/find.rb
lhs-1.0.0 lib/lhs/concerns/service/find.rb
lhs-0.4.0 lib/lhs/concerns/service/find.rb
lhs-0.3.0 lib/lhs/concerns/service/find.rb