Sha256: b802f084f4fa1fc7d065f24d93eca058c769bcfefdfb2516d29ecbe18f140815

Contents?: true

Size: 1.33 KB

Versions: 3

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
			end

			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

3 entries across 3 versions & 1 rubygems

Version Path
CloudSesame-0.4.2 lib/cloud_sesame/query/builder.rb
CloudSesame-0.4.1 lib/cloud_sesame/query/builder.rb
CloudSesame-0.4.0 lib/cloud_sesame/query/builder.rb