lib/og/enchant.rb in og-0.13.0 vs lib/og/enchant.rb in og-0.14.0

- old
+ new

@@ -41,10 +41,18 @@ def self.all(extra_sql = nil) @@og_db.load_all(#{klass}, extra_sql) end + def self.update_all(set_sql, extra_sql = nil) + @@og_db.exec("UPDATE #{klass::DBTABLE} SET \#\{set_sql\} \#\{extra_sql\}") + end + + def self.update(set_sql, extra_sql = nil) + @@og_db.exec("UPDATE #{klass::DBTABLE} SET \#\{set_sql\} \#\{extra_sql\}") + end + def self.count(sql = "SELECT COUNT(*) FROM #{klass::DBTABLE}") @@og_db.count(sql, #{klass}) end def self.select(sql) @@ -69,31 +77,47 @@ def self.delete(obj_or_oid) @@og_db.delete(obj_or_oid, #{klass}) end + def self.transaction(&block) + @@og_db.transaction(&block) + end + def self.properties_and_relations @@__meta[:props_and_relations] end - def each(&block) + def self.each(&block) all.each(&block) end include Enumerable def save @@og_db << self return self end alias_method :save!, :save - + + def reload + raise 'Cannot reload unmanaged object' unless @oid + res = @@og_db.query "SELECT * FROM #{klass::DBTABLE} WHERE oid=\#\{@oid\}" + og_read(@@og_db.get_row(res)) + end + alias_method :reload!, :reload + def update_properties(updatesql) @@og_db.pupdate(updatesql, self.oid, #{klass}) end - alias_method :pupdate!, :update_properties + alias_method :pupdate, :update_properties + alias_method :update_property, :update_properties + + def set_property(prop, value) + @@og_db.pupdate("\#\{prop\}=\#\{value\}", self.oid, #{klass}) + end def delete! - @@og_db.delete(@oid, #{klass}) + @@og_db.delete(self, #{klass}) end } # Generate finder methods.