def self.eval_og_update(klass)
props = klass.__props.reject { |p| :oid == p.symbol }
updates = props.collect { |p|
"#{p.name}=#{write_prop(p)}"
}
sql = "UPDATE #{klass::DBTABLE} SET #{updates.join(', ')} WHERE oid=#\{@oid\}"
if klass.instance_methods.include?("og_pre_update")
pre_cb = "og_pre_update(conn);"
else
pre_cb = ""
end
if klass.instance_methods.include?("og_post_update")
post_cb = "og_post_update(conn);"
else
post_cb = ""
end
if klass.instance_methods.include?("og_pre_insert_update")
pre_cb << "og_pre_insert_update(conn);"
end
if klass.instance_methods.include?("og_post_insert_update")
post_cb << "og_post_insert_update(conn);"
end
klass.class_eval %{
def og_update(conn)
#{pre_cb}
conn.exec "#{sql}"
#{post_cb}
end
}
end