class StateOfTheNation::QueryString

Public Class Methods

appropriate_db_type(klass) click to toggle source
# File lib/state_of_the_nation/query_string.rb, line 24
def self.appropriate_db_type(klass)
  case klass.connection.adapter_name
  when /PostgreSQL/
    :postgresql
  else
    :mysql
  end
end
database_appropriate_types(klass) click to toggle source
# File lib/state_of_the_nation/query_string.rb, line 7
def self.database_appropriate_types(klass)
  return {
    postgresql: {
      active_scope: "(%{finish_key} IS NULL OR %{finish_key} > ?::timestamp) AND %{start_key} <= ?::timestamp",
      less_than: "(%{start_key} < ?::timestamp)",
      greater_than_or_null: "(%{finish_key} > ?::timestamp) OR (%{finish_key} IS NULL)",
      start_and_finish_not_equal_or_are_null: "(%{start_key} != %{finish_key}) OR (%{start_key} IS NULL) OR (%{finish_key} IS NULL)",
    },
    mysql: {
      active_scope: "(%{finish_key} IS NULL OR %{finish_key} > ?) AND %{start_key} <= ?",
      less_than: "(%{start_key} < ?)",
      greater_than_or_null: "(%{finish_key} > ?) OR (%{finish_key} IS NULL)",
      start_and_finish_not_equal_or_are_null: "(%{start_key} != %{finish_key}) OR (%{start_key} IS NULL) OR (%{finish_key} IS NULL)"
    }
  }[appropriate_db_type(klass)]
end
query_for(type, klass) click to toggle source
# File lib/state_of_the_nation/query_string.rb, line 3
def self.query_for(type, klass)
  database_appropriate_types(klass)[type] % { finish_key: klass.finish_key, start_key: klass.start_key }
end