lib/upsert/quoter.rb in upsert-0.0.1 vs lib/upsert/quoter.rb in upsert-0.1.0
- old
+ new
@@ -1,8 +1,36 @@
class Upsert
+ # @private
module Quoter
+ ISO8601_DATE = '%F'
+
+ def quote_value(v)
+ case v
+ when NilClass
+ 'NULL'
+ when Upsert::Binary
+ quote_binary v # must be defined by base
+ when String
+ quote_string v # must be defined by base
+ when TrueClass, FalseClass
+ quote_boolean v
+ when BigDecimal
+ quote_big_decimal v
+ when Numeric
+ v
+ when Symbol
+ quote_string v.to_s
+ when Time, DateTime
+ quote_time v # must be defined by base
+ when Date
+ quote_string v.strftime(ISO8601_DATE)
+ else
+ raise "not sure how to quote #{v.class}: #{v.inspect}"
+ end
+ end
+
def quote_idents(idents)
- idents.map { |k| quote_ident(k) }.join(',')
+ idents.map { |k| quote_ident(k) }.join(',') # must be defined by base
end
def quote_values(values)
values.map { |v| quote_value(v) }.join(',')
end