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