module QueryletRails::Model::Queryable
Public Instance Methods
_query(relative_path, data={})
click to toggle source
# File lib/querylet_rails/model/queryable.rb, line 97 def _query relative_path, data={} file_path = self.query_root.join('app','queries',relative_path + '.sql') template = File.read file_path _query_compile_template template, data end
_query_compile_template(template, data={})
click to toggle source
# File lib/querylet_rails/model/queryable.rb, line 103 def _query_compile_template template, data={} querylet = Querylet::Querylet.new path: self.query_root.join('app','queries').to_s begin querylet.compile(template).call(data) rescue => e puts "" puts "===== Querylet Compile Error Occured =====" template_annotated = '' template.split("\n").each_with_index do |line,i| template_annotated << "#{(i+1).to_s.rjust(3, " ")} | #{line}\n" end puts template_annotated raise e end end
_query_wrap_array(template)
click to toggle source
# File lib/querylet_rails/model/queryable.rb, line 76 def _query_wrap_array template <<-HEREDOC.chomp (SELECT COALESCE(array_to_json(array_agg(row_to_json(array_row))),'[]'::json) FROM ( #{template.to_s.chomp} ) array_row); HEREDOC end
_query_wrap_object(template)
click to toggle source
# File lib/querylet_rails/model/queryable.rb, line 68 def _query_wrap_object template <<-HEREDOC.chomp (SELECT COALESCE(row_to_json(object_row),'{}'::json) FROM ( #{template.to_s.chomp} ) object_row); HEREDOC end
current_tenant_id()
click to toggle source
This will fetch the current tenant id
# File lib/querylet_rails/model/queryable.rb, line 37 def current_tenant_id self.class.current_tenant_id end
initialize_tenant_id()
click to toggle source
This will apply the current tenant_id on the creation of a new model
# File lib/querylet_rails/model/queryable.rb, line 50 def initialize_tenant_id if new_record? if has_attribute?(:tenant_id) && self.tenant_id.nil? self.tenant_id = current_tenant_id end end end
query(relative_path, data={})
click to toggle source
# File lib/querylet_rails/model/queryable.rb, line 8 def query relative_path, data={} self.class.query relative_path, data end
query_root()
click to toggle source
override this function
# File lib/querylet_rails/model/queryable.rb, line 64 def query_root Rails.root end
reset_tenant_id()
click to toggle source
# File lib/querylet_rails/model/queryable.rb, line 45 def reset_tenant_id self.class.reset_tenant_id end
select_all(relative_path, data={})
click to toggle source
# File lib/querylet_rails/model/queryable.rb, line 28 def select_all relative_path, data={} self.class.select_all relative_path, data end
select_array(relative_path, data={})
click to toggle source
# File lib/querylet_rails/model/queryable.rb, line 24 def select_array relative_path, data={} self.class.select_array relative_path, data end
select_object(relative_path, data={})
click to toggle source
# File lib/querylet_rails/model/queryable.rb, line 20 def select_object relative_path, data={} self.class.select_object relative_path, data end
select_paginate(query, attrs, count)
click to toggle source
# File lib/querylet_rails/model/queryable.rb, line 32 def select_paginate query, attrs, count self.class.select_paginate query, attrs, count end
select_value(relative_path, data={})
click to toggle source
# File lib/querylet_rails/model/queryable.rb, line 12 def select_value relative_path, data={} self.class.select_value relative_path, data end
select_values(relative_path, data={})
click to toggle source
# File lib/querylet_rails/model/queryable.rb, line 16 def select_values relative_path, data={} self.class.select_values relative_path, data end
set_tenant_id(tenant_id)
click to toggle source
# File lib/querylet_rails/model/queryable.rb, line 41 def set_tenant_id tenant_id self.class.set_tenant_id tenant_id end