class QueryInterface::Server::LazyQuery
Attributes
model[RW]
result_model[RW]
transformations[RW]
Public Class Methods
new(model, transformations=nil, result_model=nil)
click to toggle source
# File lib/query-interface-server/lazy_query.rb, line 7 def initialize(model, transformations=nil, result_model=nil) self.model = model if transformations self.transformations = transformations.map {|item| item.dup} else self.transformations = [] end self.result_model = result_model end
Public Instance Methods
add_transformation(type, parameter=nil)
click to toggle source
# File lib/query-interface-server/lazy_query.rb, line 33 def add_transformation(type, parameter=nil) self.transformations << {'transformation' => type, 'parameter' => parameter} end
context(association, model=nil)
click to toggle source
# File lib/query-interface-server/lazy_query.rb, line 59 def context(association, model=nil) self.copy.tap do |query| query.result_model = (model ? model : association.to_s.singularize.camelize.constantize) query.add_transformation("context", association.to_s) end end
copy(options = {})
click to toggle source
# File lib/query-interface-server/lazy_query.rb, line 29 def copy(options = {}) self.class.new(self.model, self.transformations, self.result_model) end
count()
click to toggle source
# File lib/query-interface-server/lazy_query.rb, line 99 def count query = self.copy query.add_transformation("count") query.do_query[:count] end
dataset()
click to toggle source
# File lib/query-interface-server/lazy_query.rb, line 89 def dataset self.do_query(false) end
do_query(add_default_order=true)
click to toggle source
# File lib/query-interface-server/lazy_query.rb, line 111 def do_query(add_default_order=true) transformer = Transformations::SequelTransformer.new(self.model.filter) transformer.run(self.transformations, add_default_order) end
evaluate()
click to toggle source
# File lib/query-interface-server/lazy_query.rb, line 85 def evaluate self.do_query end
exclude(conditions={})
click to toggle source
# File lib/query-interface-server/lazy_query.rb, line 37 def exclude(conditions={}) self.copy.tap do |query| conditions.each do |key, value| query.add_transformation("exclude", {"field" => key, "value" => value}) end end end
filter(conditions={})
click to toggle source
# File lib/query-interface-server/lazy_query.rb, line 45 def filter(conditions={}) self.copy.tap do |query| conditions.each do |key, value| query.add_transformation("filter", {"field" => key, "value" => value}) end end end
first(*args)
click to toggle source
# File lib/query-interface-server/lazy_query.rb, line 116 def first(*args) one("first", *args) end
ids()
click to toggle source
# File lib/query-interface-server/lazy_query.rb, line 93 def ids query = self.copy query.add_transformation("map_ids") query.do_query end
instance(id)
click to toggle source
# File lib/query-interface-server/lazy_query.rb, line 53 def instance(id) self.copy.tap do |query| query.add_transformation("instance", id) end end
instantiate(data)
click to toggle source
# File lib/query-interface-server/lazy_query.rb, line 21 def instantiate(data) (self.result_model ? self.result_model.new(data) : self.model.new(data)) end
instantiate_collection(parsed_data)
click to toggle source
# File lib/query-interface-server/lazy_query.rb, line 25 def instantiate_collection(parsed_data) (self.result_model ? self.result_model.new_collection(parsed_data) : self.model.new_collection(parsed_data)) end
last(*args)
click to toggle source
# File lib/query-interface-server/lazy_query.rb, line 120 def last(*args) one("last", *args) end
method_missing(method_name, *args, &block)
click to toggle source
# File lib/query-interface-server/lazy_query.rb, line 128 def method_missing(method_name, *args, &block) evaluate.send(method_name, *args, &block) end
order(*fields)
click to toggle source
# File lib/query-interface-server/lazy_query.rb, line 77 def order(*fields) self.copy.tap do |query| fields.each do |field| query.add_transformation("order", field) end end end
parse(data)
click to toggle source
# File lib/query-interface-server/lazy_query.rb, line 17 def parse(data) (self.result_model ? self.result_model.parse(data) : self.model.parse(data)) end
to_json(*args)
click to toggle source
# File lib/query-interface-server/lazy_query.rb, line 124 def to_json(*args) evaluate.to_json(*args) end
update(data)
click to toggle source
# File lib/query-interface-server/lazy_query.rb, line 105 def update(data) query = self.copy query.add_transformation("update", data) query.do_query[:updated_count] end
with(*fields, **opts)
click to toggle source
# File lib/query-interface-server/lazy_query.rb, line 66 def with(*fields, **opts) self.copy.tap do |query| fields.each do |field| query.add_transformation("with", {"field" => field.to_s}) end opts.each do |field, param| query.add_transformation("with", {"field" => field.to_s, "param" => param}) end end end
Protected Instance Methods
one(which, params = {})
click to toggle source
# File lib/query-interface-server/lazy_query.rb, line 133 def one(which, params = {}) query = self.copy query.add_transformation(which) query.do_query end