module Searchable

Public Instance Methods

find(id) click to toggle source
# File lib/activeleopard/modules/searchable.rb, line 23
  def find(id)
    search_datum = DBConnection.get_first_row(<<-SQL)
      SELECT
        *
      FROM
        #{self.table_name}
      WHERE
        id = #{id}
    SQL
    raise RecordNotFound, "This record does not exist" if search_datum.nil?
    self.new(search_datum)
  end
find_by(params) click to toggle source
# File lib/activeleopard/modules/searchable.rb, line 2
  def find_by(params)
    where_clause = WhereClause.new([params])

    search_datum = DBConnection.get_first_row(<<-SQL, where_clause.values)
      SELECT
        *
      FROM
        #{self.table_name}
      #{where_clause.as_sql}
    SQL

    search_datum.nil? ? nil : self.new(search_datum)
  end
group(group_attr) click to toggle source
# File lib/activeleopard/modules/searchable.rb, line 52
def group(group_attr)
  Relation.new(
    {group: GroupClause.new(group_attr)},
    self
  )
end
joins(association, _ = nil) click to toggle source
# File lib/activeleopard/modules/searchable.rb, line 36
def joins(association, _ = nil)
  options = self.assoc_options[association]

  Relation.new(
    {join: JoinOptions.new(options, self.table_name)},
    self
  )
end
order(ordering_attr) click to toggle source
# File lib/activeleopard/modules/searchable.rb, line 59
def order(ordering_attr)
  Relation.new(
    {order: OrderClause.new(ordering_attr)},
    self
  )
end
select(*params) click to toggle source
# File lib/activeleopard/modules/searchable.rb, line 45
def select(*params)
  Relation.new(
    {select: SelectClause.new(params)},
    self
  )
end
where(*params) click to toggle source
# File lib/activeleopard/modules/searchable.rb, line 16
def where(*params)
  Relation.new(
    {where: WhereClause.new(params)},
    self
  )
end