340 """update an entity in the source""" |
340 """update an entity in the source""" |
341 relations, kwargs = self._entity_relations_and_kwargs(session, entity) |
341 relations, kwargs = self._entity_relations_and_kwargs(session, entity) |
342 cu = session.pool[self.uri] |
342 cu = session.pool[self.uri] |
343 cu.execute('SET %s WHERE X eid %%(x)s' % ','.join(relations), |
343 cu.execute('SET %s WHERE X eid %%(x)s' % ','.join(relations), |
344 kwargs, 'x') |
344 kwargs, 'x') |
|
345 self._query_cache.clear() |
345 |
346 |
346 def delete_entity(self, session, etype, eid): |
347 def delete_entity(self, session, etype, eid): |
347 """delete an entity from the source""" |
348 """delete an entity from the source""" |
348 cu = session.pool[self.uri] |
349 cu = session.pool[self.uri] |
349 cu.execute('DELETE %s X WHERE X eid %%(x)s' % etype, |
350 cu.execute('DELETE %s X WHERE X eid %%(x)s' % etype, |
350 {'x': self.eid2extid(eid, session)}, 'x') |
351 {'x': self.eid2extid(eid, session)}, 'x') |
|
352 self._query_cache.clear() |
351 |
353 |
352 def add_relation(self, session, subject, rtype, object): |
354 def add_relation(self, session, subject, rtype, object): |
353 """add a relation to the source""" |
355 """add a relation to the source""" |
354 cu = session.pool[self.uri] |
356 cu = session.pool[self.uri] |
355 cu.execute('SET X %s Y WHERE X eid %%(x)s, Y eid %%(y)s' % rtype, |
357 cu.execute('SET X %s Y WHERE X eid %%(x)s, Y eid %%(y)s' % rtype, |
356 {'x': self.eid2extid(subject, session), |
358 {'x': self.eid2extid(subject, session), |
357 'y': self.eid2extid(object, session)}, ('x', 'y')) |
359 'y': self.eid2extid(object, session)}, ('x', 'y')) |
|
360 self._query_cache.clear() |
358 |
361 |
359 def delete_relation(self, session, subject, rtype, object): |
362 def delete_relation(self, session, subject, rtype, object): |
360 """delete a relation from the source""" |
363 """delete a relation from the source""" |
361 cu = session.pool[self.uri] |
364 cu = session.pool[self.uri] |
362 cu.execute('DELETE X %s Y WHERE X eid %%(x)s, Y eid %%(y)s' % rtype, |
365 cu.execute('DELETE X %s Y WHERE X eid %%(x)s, Y eid %%(y)s' % rtype, |
363 {'x': self.eid2extid(subject, session), |
366 {'x': self.eid2extid(subject, session), |
364 'y': self.eid2extid(object, session)}, ('x', 'y')) |
367 'y': self.eid2extid(object, session)}, ('x', 'y')) |
|
368 self._query_cache.clear() |
365 |
369 |
366 |
370 |
367 class RQL2RQL(object): |
371 class RQL2RQL(object): |
368 """translate a local rql query to be executed on a distant repository""" |
372 """translate a local rql query to be executed on a distant repository""" |
369 def __init__(self, source): |
373 def __init__(self, source): |