lib/og/store/mysql.rb in og-0.26.0 vs lib/og/store/mysql.rb in og-0.27.0
- old
+ new
@@ -26,14 +26,16 @@
IO.popen("mysql #{opts}", 'w') { |io| io.puts stream }
end
require 'og/store/sql'
+#--
# Customize the standard mysql resultset to make
# more compatible with Og.
+#++
-class Mysql::Result
+class Mysql::Result # :nodoc: all
def blank?
0 == num_rows
end
alias_method :next, :fetch_row
@@ -344,32 +346,16 @@
return %|#\{@#{p} ? "'#\{#{self.class}.timestamp(@#{p})\}'" : 'NULL'\}|
elsif p.klass.ancestors.include?(Date)
return %|#\{@#{p} ? "'#\{#{self.class}.date(@#{p})\}'" : 'NULL'\}|
elsif p.klass.ancestors.include?(TrueClass)
return "#\{@#{p} ? \"'1'\" : 'NULL' \}"
- else
+ elsif p.klass.ancestors.include?(Og::Blob)
+ return %|#\{@#{p} ? "'#\{#{self.class}.escape(#{self.class}.blob(@#{p}))\}'" : 'NULL'\}|
+ else
# gmosx: keep the '' for nil symbols.
return %|#\{@#{p} ? "'#\{#{self.class}.escape(@#{p}.to_yaml)\}'" : "''"\}|
end
- end
-
- def read_prop(p, col)
- if p.klass.ancestors.include?(Integer)
- return "#{self.class}.parse_int(res[#{col} + offset])"
- elsif p.klass.ancestors.include?(Float)
- return "#{self.class}.parse_float(res[#{col} + offset])"
- elsif p.klass.ancestors.include?(String)
- return "res[#{col} + offset]"
- elsif p.klass.ancestors.include?(Time)
- return "#{self.class}.parse_timestamp(res[#{col} + offset])"
- elsif p.klass.ancestors.include?(Date)
- return "#{self.class}.parse_date(res[#{col} + offset])"
- elsif p.klass.ancestors.include?(TrueClass)
- return "('1' == res[#{col} + offset])"
- else
- return "YAML.load(res[#{col} + offset])"
- end
- end
+ end
def eval_og_insert(klass)
props = klass.properties.values
values = props.collect { |p| write_prop(p) }.join(',')