Module: Litesearch::Model::SequelClassMethods

Defined in:
lib/litestack/litesearch/model.rb

Instance Method Summary collapse

Instance Method Details

#create_instance(row) ⇒ Object



169
170
171
172
173
174
175
176
177
# File 'lib/litestack/litesearch/model.rb', line 169

def create_instance(row)
  # we need to convert keys to symbols first!
  row.keys.each do |k|
    next if k.is_a? Symbol
    row[k.to_sym] = row[k]
    row.delete(k)
  end
  call(row)
end

#fetch_row(id) ⇒ Object



151
152
153
# File 'lib/litestack/litesearch/model.rb', line 151

def fetch_row(id)
  self[id]
end

#get_connectionObject



155
156
157
# File 'lib/litestack/litesearch/model.rb', line 155

def get_connection
  db.instance_variable_get(:@raw_db)
end

#search(term) ⇒ Object



159
160
161
162
163
164
165
166
167
# File 'lib/litestack/litesearch/model.rb', line 159

def search(term)
  dataset.select(
    Sequel.lit("#{table_name}.*, -#{index_name}.rank AS search_rank")
  ).inner_join(
    Sequel.lit("#{index_name}(:term) ON #{table_name}.id = #{index_name}.rowid AND rank != 0", {term: term})
  ).order(
    Sequel.lit("rank")
  )
end