Sha256: e27f7c2b6eb3e3eb7d3019249d89f45dce636bf3a70438623cc7ed26e67fb8f3

Contents?: true

Size: 732 Bytes

Versions: 10

Compression:

Stored size: 732 Bytes

Contents

module Kasket
  module SelectManagerMixin
    def to_kasket_query(klass, binds = [])
      query = Kasket::Visitor.new(klass, binds).accept(ast)

      return nil if query.nil? || query == :unsupported
      return nil if query[:attributes].blank?

      query[:index] = query[:attributes].map(&:first)

      if query[:limit]
        return nil if query[:limit] > 1
        # return nil if !query[:index].include?(:id)
      end

      if query[:index].size > 1 && query[:attributes].any? { |attribute, value| value.is_a?(Array) }
        return nil
      end

      query[:key] = klass.kasket_key_for(query[:attributes])
      query[:key] << '/first' if query[:limit] == 1 && query[:index] != [:id]

      query
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
kasket-3.1.3 lib/kasket/select_manager_mixin.rb
kasket-3.1.2 lib/kasket/select_manager_mixin.rb
kasket-3.1.1 lib/kasket/select_manager_mixin.rb
kasket-3.1.0 lib/kasket/select_manager_mixin.rb
kasket-3.0.0 lib/kasket/select_manager_mixin.rb
kasket-2.2.1 lib/kasket/select_manager_mixin.rb
kasket-2.2.0 lib/kasket/select_manager_mixin.rb
kasket-2.1.2 lib/kasket/select_manager_mixin.rb
kasket-2.1.1 lib/kasket/select_manager_mixin.rb
kasket-2.1.0 lib/kasket/select_manager_mixin.rb