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(',')