+
+ def sync(self):
+ """
+ Sync this record with the database.
+ """
+ from sfa.storage.table import SfaTable
+ table = SfaTable()
+ filter = {}
+ if self.get('record_id'):
+ filter['record_id'] = self.get('record_id')
+ if self.get('hrn') and self.get('type'):
+ filter['hrn'] = self.get('hrn')
+ filter['type'] = self.get('type')
+ if self.get('pointer'):
+ filter['pointer'] = self.get('pointer')
+ existing_records = table.find(filter)
+ if not existing_records:
+ table.insert(self)
+ else:
+ existing_record = existing_records[0]
+ self['record_id'] = existing_record['record_id']
+ table.update(self)
+
+ def delete(self):
+ """
+ Remove record from the database.
+ """
+ from sfa.storage.table import SfaTable
+ table = SfaTable()
+ filter = {}
+ if self.get('record_id'):
+ filter['record_id'] = self.get('record_id')
+ if self.get('hrn') and self.get('type'):
+ filter['hrn'] = self.get('hrn')
+ filter['type'] = self.get('type')
+ if self.get('pointer'):
+ filter['pointer'] = self.get('pointer')
+ if filter:
+ existing_records = table.find(filter)
+ for record in existing_records:
+ table.remove(record)