Module: DataMapper::Adapters::Sql::Quoting

Defined in:
lib/data_mapper/adapters/sql/quoting.rb

Overview

Quoting is a mixin that extends your DataMapper::Database singleton-class to allow for object-name and value quoting to be exposed to the queries.

DESIGN: Is there any need for this outside of the query objects? Should we just include it in our query object subclasses and not rely on a Quoting mixin being part of the “standard” Adapter interface?

Instance Method Summary collapse

Instance Method Details

#quote_column_name(name) ⇒ Object



17
18
19
# File 'lib/data_mapper/adapters/sql/quoting.rb', line 17

def quote_column_name(name)
  name.ensure_wrapped_with(self.class::COLUMN_QUOTING_CHARACTER)
end

#quote_table_name(name) ⇒ Object



13
14
15
# File 'lib/data_mapper/adapters/sql/quoting.rb', line 13

def quote_table_name(name)
  name.ensure_wrapped_with(self.class::TABLE_QUOTING_CHARACTER)
end

#quote_value(value) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/data_mapper/adapters/sql/quoting.rb', line 21

def quote_value(value)
  return 'NULL' if value.nil?

  case value
    when Numeric then value.to_s
    when String then "'#{value.gsub("'", "''")}'"
    when Class then "'#{value.name}'"
    when Date then "'#{value.to_s}'"
    when Time, DateTime then "'#{value.strftime("%Y-%m-%d %H:%M:%S")}'"
    when TrueClass, FalseClass then value.to_s.upcase
    else raise "Don't know how to quote #{value.inspect}"
  end
end