class Bodhi::Query
Attributes
context[R]
controller[R]
criteria[R]
fields[R]
klass[R]
paging[R]
sorting[R]
url[R]
Public Class Methods
new(klass, controller="resources")
click to toggle source
# File lib/bodhi-slam/queries.rb, line 5 def initialize(klass, controller="resources") @controller = controller @klass = Object.const_get(klass.to_s) @criteria = {} @fields = [] @paging = {} @sorting = {} end
Public Instance Methods
all()
click to toggle source
# File lib/bodhi-slam/queries.rb, line 116 def all if context.nil? raise ArgumentError.new("a Bodhi::Context is required to query the API") end if context.invalid? raise Bodhi::ContextErrors.new(context.errors.messages), context.errors.to_a.to_s end result = context.connection.get do |request| request.url self.url request.headers[context.credentials_header] = context.credentials end if result.status != 200 raise Bodhi::ApiErrors.new(body: result.body, status: result.status), "status: #{result.status}, body: #{result.body}" end result.body.map{ |attributes| klass.new(attributes.merge(bodhi_context: context)) } end
clear!()
click to toggle source
# File lib/bodhi-slam/queries.rb, line 14 def clear! @context = nil @criteria = {} @fields.clear @paging.clear @sorting.clear end
count()
click to toggle source
# File lib/bodhi-slam/queries.rb, line 74 def count if context.nil? raise ArgumentError.new("a Bodhi::Context is required to query the API") end if context.invalid? raise Bodhi::ContextErrors.new(context.errors.messages), context.errors.to_a.to_s end result = context.connection.get do |request| request.url self.url.gsub(klass.name, "#{klass}/count") request.headers[context.credentials_header] = context.credentials end if result.status != 200 raise Bodhi::ApiErrors.new(body: result.body, status: result.status), "status: #{result.status}, body: #{result.body}" end result.body["count"] end
delete()
click to toggle source
# File lib/bodhi-slam/queries.rb, line 95 def delete if context.nil? raise ArgumentError.new("a Bodhi::Context is required to query the API") end if context.invalid? raise Bodhi::ContextErrors.new(context.errors.messages), context.errors.to_a.to_s end result = context.connection.delete do |request| request.url self.url request.headers[context.credentials_header] = context.credentials end if result.status != 200 raise Bodhi::ApiErrors.new(body: result.body, status: result.status), "status: #{result.status}, body: #{result.body}" end result.body end
first()
click to toggle source
# File lib/bodhi-slam/queries.rb, line 137 def first if context.nil? raise ArgumentError.new("a Bodhi::Context is required to query the API") end if context.invalid? raise Bodhi::ContextErrors.new(context.errors.messages), context.errors.to_a.to_s end result = context.connection.get do |request| request.url self.url request.headers[context.credentials_header] = context.credentials end if result.status != 200 raise Bodhi::ApiErrors.new(body: result.body, status: result.status), "status: #{result.status}, body: #{result.body}" end result.body.map{ |attributes| klass.new(attributes.merge(bodhi_context: context)) }.first end
from(context)
click to toggle source
# File lib/bodhi-slam/queries.rb, line 179 def from(context) unless context.is_a? Bodhi::Context raise ArgumentError.new("Expected Bodhi::Context but received #{context.class}") end @context = context self end
last()
click to toggle source
# File lib/bodhi-slam/queries.rb, line 158 def last if context.nil? raise ArgumentError.new("a Bodhi::Context is required to query the API") end if context.invalid? raise Bodhi::ContextErrors.new(context.errors.messages), context.errors.to_a.to_s end result = context.connection.get do |request| request.url self.url request.headers[context.credentials_header] = context.credentials end if result.status != 200 raise Bodhi::ApiErrors.new(body: result.body, status: result.status), "status: #{result.status}, body: #{result.body}" end result.body.map{ |attributes| klass.new(attributes.merge(bodhi_context: context)) }.last end
limit(number)
click to toggle source
# File lib/bodhi-slam/queries.rb, line 213 def limit(number) unless number.is_a? Integer raise ArgumentError.new("Expected Integer but received #{number.class}") end unless number <= 100 raise ArgumentError.new("Expected limit to be less than or equal to 100 but received #{number}") end @paging[:limit] = number self end
page(number)
click to toggle source
# File lib/bodhi-slam/queries.rb, line 226 def page(number) unless number.is_a? Integer raise ArgumentError.new("Expected Integer but received #{number.class}") end @paging[:page] = number self end
select(field_names)
click to toggle source
# File lib/bodhi-slam/queries.rb, line 201 def select(field_names) unless field_names.is_a? String raise ArgumentError.new("Expected String but received #{field_names.class}") end fields_array = field_names.split(',') @fields << fields_array @fields.flatten! @fields.uniq! self end
sort(field, order=nil)
click to toggle source
# File lib/bodhi-slam/queries.rb, line 235 def sort(field, order=nil) unless field.is_a? String raise ArgumentError.new("Expected String but received #{field.class}") end unless order.nil? @sorting[:order] = order end @sorting[:field] = field self end
where(query)
click to toggle source
# File lib/bodhi-slam/queries.rb, line 188 def where(query) if query.is_a?(String) json = JSON.parse(query) query = Bodhi::Support.symbolize_keys(json) else query = Bodhi::Support.symbolize_keys(query) end @criteria.merge!(query) self end
Also aliased as: and