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