lib/mini_sql/coders.rb in mini_sql-0.1.9 vs lib/mini_sql/coders.rb in mini_sql-0.1.10
- old
+ new
@@ -3,12 +3,29 @@
class NumericCoder < PG::SimpleDecoder
def decode(string, tuple = nil, field = nil)
BigDecimal.new(string)
end
end
+
class IPAddrCoder < PG::SimpleDecoder
def decode(string, tuple = nil, field = nil)
IPAddr.new(string)
end
end
+
+ class TimestampUtc < PG::SimpleDecoder
+ # exact same implementation as Rails here
+ ISO_DATETIME = /\A(\d{4})-(\d\d)-(\d\d) (\d\d):(\d\d):(\d\d)(\.\d+)?\z/
+
+ def decode(string, tuple = nil, field = nil)
+ if string =~ ISO_DATETIME
+ microsec = ($7.to_r * 1_000_000).to_i
+ Time.utc $1.to_i, $2.to_i, $3.to_i, $4.to_i, $5.to_i, $6.to_i, microsec
+ else
+ STDERR.puts "unexpected date time format #{string}"
+ string
+ end
+ end
+ end
+
end
end