Methods
Public Class methods
included(base)
    # File lib/og/store/sql.rb, line 59
59:   def self.included(base)
60:     base.extend(SqlEnchantmentNoPolymorphClassMethods)
61:   end
Public Instance methods
field_for_attribute(a, anno)
    # File lib/og/store/sql.rb, line 78
78:   def field_for_attribute(a, anno)
79:     (f = anno[:field]) ? f : a
80:   end
field_map()
     # File lib/og/store/sql.rb, line 137
137:   def field_map
138:     raise NotImplementedError, "field_map not set for #{self.class.name}!"
139:   end
og_create_schema(store)
    # File lib/og/store/sql.rb, line 63
63:   def og_create_schema(store)
64:     if Og.create_schema
65:       unless self.class.schema_inheritance_child?
66:         store.create_table(self.class)
67:         store.create_table_indices(self.class)
68:         store.create_table_joins(self.class)
69:       end
70:       store.evolve_schema(self.class)
71:     end
72:   end
og_delete(store, cascade = true)
     # File lib/og/store/sql.rb, line 121
121:   def og_delete(store, cascade = true)
122:     pk_field = self.class.primary_key 
123:     pk_field = self.class.ann(pk_field, :field) || pk_field
124:     pk = instance_variable_get("@#{pk_field}")
125:     transaction do |tx|
126:       tx.exec "DELETE FROM #{self.class.table} WHERE #{pk_field}=#{pk}"
127:       if cascade && descendants = self.class.ann(:self, :descendants)
128:         #This is only a single cascade - shouldn't a cascade spill all the way
129:         #down?
130:         descendants.each do |dclass, foreign_key|
131:           tx.exec "DELETE FROM #{dclass::table} WHERE #{foreign_key}=#{pk}"
132:         end
133:       end
134:     end
135:   end
og_insert(store)
     # File lib/og/store/sql.rb, line 82
 82:   def og_insert(store)
 83:     inserts = {}
 84: 
 85:     for a in self.class.serializable_attributes
 86:       anno = self.class.ann(a)
 87:       field = field_for_attribute(a, anno)
 88:       a = instance_variable_get("@#{a}")
 89:       inserts[field] = store.write_attr(a, anno) 
 90:     end
 91: 
 92:     # If the class participates in STI, automatically insert
 93:     # an ogtype serializable attribute.
 94: 
 95:     if self.class.schema_inheritance?
 96:       inserts[:ogtype] = store.quote(self.class.name)
 97:     end
 98: 
 99:     id = store.insert(self.class, inserts)
100:     instance_variable_set("@#{self.class.primary_key}", id)
101:   end
og_read(res, row = 0, offset = 0)
     # File lib/og/store/sql.rb, line 142
142:   def og_read(res, row = 0, offset = 0)
143:     attrs = self.class.attributes
144: 
145:     for a in attrs
146:       anno = self.class.ann(a)
147: 
148:       f = anno[:field] ? anno[:field] : a
149: 
150:       if col = field_map[f]
151:         instance_variable_set("@#{a}", store.read_attr(anno, res, col, offset))
152:       end
153:     end
154:   end
og_update(store, options = nil)
     # File lib/og/store/sql.rb, line 103
103:   def og_update(store, options = nil)
104:     updates = {}
105:     pk_field = self.class.primary_key
106: 
107:     self.class.serializable_attributes.reject { |a| a == pk_field }.each do |a|
108:       anno = self.class.ann(a)
109:       field = field_for_attribute a, anno
110:       a = instance_variable_get("@#{a}")
111:       updates[field.to_s]=store.write_attr(a, anno)
112:     end
113: 
114:     pk = instance_variable_get("@#{pk_field}")
115:     sql = store.update_sql(self.class, pk, updates)
116:     sql << " AND #{options[:condition]}" if options and options[:condition]
117:     changed = store.sql_update(sql)
118:     return changed
119:   end
store()
    # File lib/og/store/sql.rb, line 74
74:   def store
75:     return self.class.store
76:   end