Class: Vinbot::Data::Vehicle

Inherits:
Sequel::Model
  • Object
show all
Defined in:
lib/data/vehicle.rb

Class Method Summary collapse

Class Method Details

.add_conditions_to_join(join_query, params) ⇒ Object



26
27
28
# File 'lib/data/vehicle.rb', line 26

def self.add_conditions_to_join(join_query, params)
  params.inject(join_query) { |r, e| r.where("#{e.first}s__name".to_sym => e.last) }
end

.get_random_vehicleObject



30
31
32
33
# File 'lib/data/vehicle.rb', line 30

def self.get_random_vehicle
  max = ::Vinbot::Data::Vehicle.max(:id)
  ::Vinbot::Data::Vehicle.where(id: rand(1..max)).first
end

.get_vehicle(params) ⇒ Object



16
17
18
19
20
# File 'lib/data/vehicle.rb', line 16

def self.get_vehicle(params)
  return get_random_vehicle if params.empty?
  join_query = perform_joins(params)
  add_conditions_to_join(join_query, params).order(Sequel.lit('RANDOM()')).limit(1).first
end

.perform_joins(params) ⇒ Object



22
23
24
# File 'lib/data/vehicle.rb', line 22

def self.perform_joins(params)
  params.keys.inject(from(:vehicles)) { |r, e| r.join("#{e}s".to_sym, :id => "vehicles__#{e}_id".to_sym) }
end