def execute_add_foreign_key(self, server): # self.params - (r_table, r_col, table) model_meta = ModelMeta(server, self.params[0]) meta = model_meta.get_meta() try: refs = meta['REFERENCES'] except KeyError: refs = [] refs.append('%s=%s' % (self.params[1], self.params[2])) meta['REFERENCES'] = refs model_meta.set_meta(meta)
def execute_insert(self, server, params): # self.params --- (table name, columns, values) table = server[self.params[0]] if not 'id' in self.params[1]: seq = Sequence(server, ("%s_seq"% (self.params[0], ))) id = str(seq.nextval()) obj = {'_id': id} else: obj = {} model_meta = ModelMeta(server, self.params[0]) views = process_views(model_meta.get_meta(), self.params[1], self.params[2]) for key, view, val in izip(self.params[1], views, params): if key=='id': key = '_id' if view == '__RAW__': obj[key] = val else: obj[key] = view % val table[obj['_id']] = obj
def execute_update(self, server, params): # self.params --- (table name, column-values, where) table_name = self.params[0] table = server[table_name] view = self.simple_select(server, table, (table_name+'.'+'"id"',), self.params[2], params) columns, values, views = [], [], [] for col,val,v in self.params[1]: columns.append(unquote_name(col)) values.append(val) views.append(v) model_meta = ModelMeta(server, self.params[0]) views = process_views(model_meta.get_meta(), columns, views) for d in view: obj = table[d.id] for key, view, val in izip(columns, views, values): if key=='id': key = '_id' if view == '__RAW__': obj[key] = val else: obj[key] = view % val table[obj['_id']] = obj