Sha256: e0e80c62a334306f4ca25f089082eea037000f9506a2e3b78951b4048a8f24c9

Contents?: true

Size: 1.33 KB

Versions: 1

Compression:

Stored size: 1.33 KB

Contents

module CloudSesame
	module Query
		class Builder
			include DSL::Base
			include DSL::PageMethods
			include DSL::QueryMethods
			include DSL::ReturnMethods
			include DSL::SortMethods

			# # Filter Query DSL
			include DSL::BlockMethods
			include DSL::FieldMethods
			include DSL::FilterQueryMethods
			include DSL::ScopeMethods

			attr_reader :context, :searchable, :result

			def initialize(default_context, searchable)
				@context = default_context
				@searchable = searchable
			end

			def request
				@request ||= Node::Request.new context.dup
			end

			def response
				@response ||= search
			en

			def compile
				request.compile
			end

			def inspect
				"#<#{ self.class }:#{ object_id } #{ compile }>"
			end

			# ENDING METHODS
			# =========================================

			def found
				response.hits.found
			end

			def results
				response.hits.hit
			end

			def each(&block)
				results.each &block
			end

			def map(&block)
				results.map &block
			end

			def search
				compiled = request.compile
				raise Error::MissingQuery.new("Query or FilterQuery can not be empty!") if !compiled[:query] || compiled[:query].empty?
				@response = searchable.cloudsearch.client.search compiled
			end

			private

			def dsl_scope
				request.filter_query.root
			end

			def dsl_return(node = nil)
				self
			end

		end
	end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
CloudSesame-0.3.5 lib/cloud_sesame/query/builder.rb