def _query_create_published_reference(self, reference, resource, statement): query = ("INSERT OR REPLACE INTO %s (reference, cell_id, content_id) VALUES (?, ?, ?)" % PUBLISHED_REFERENCES) content_id = resource.content.ID.__repr__() if resource.content else None statement.execute(query, (encode_serialized_value(reference.serialize()), resource.cell.ID.__repr__(), content_id)) query = "REPLACE INTO %s (id, blob) VALUES (?, ?)" % (PUBLISHED_CELLS) statement.execute(query, (resource.cell.ID.__repr__(), encode_serialized_value(resource.cell.serialize()))) if content_id: query = "REPLACE INTO %s (id, blob) VALUES (?, ?)" % (PUBLISHED_CONTENTS) statement.execute(query, (resource.content.ID.__repr__(), encode_serialized_value(resource.content.serialize())))
def test_delete_dep_table(self): original_deptable = BlockVersionTable() brl_block = BRLBlock('dummy/dummy/block/master') block_version = BlockVersion(brl_block, 0) self.db.set_dep_table(block_version, original_deptable) ID = encode_serialized_value(block_version.serialize()) self.db.delete(ID, DEP_TABLES) self.assertRaises(NotInStoreException, self.db.get_dep_table, block_version)
def test_delete_dep_table(self): original_deptable = BlockVersionTable() brl_block = BRLBlock('dummy/dummy/block/master') block_version = BlockVersion(brl_block, 0) self.db.set_dep_table(block_version, original_deptable) ID = encode_serialized_value(block_version.serialize()) self.db.delete(ID, DEP_TABLES) self.assertRaises(NotInStoreException, self.db.get_dep_table, block_version)
def get_published_resources(self, references): ''' Parameters: references: a References (biicode.common.model.symbolic.reference.References) object ''' simple_refs = references.explode() # references object to reference list #each reference has to be stored as json string, cause it is a tuple ids = ",".join(["\"%s\"" % encode_serialized_value(v.serialize()) for v in simple_refs]) return self._read_referenced_resources(self.__query_published_references(ids), ID)
def remove_dev_references(self, block_version): ser_version = encode_serialized_value(block_version.serialize()) self.delete(ser_version, DEP_TABLES) self.delete(ser_version, SNAPSHOTS) self.delete(ser_version, DELTAS) c = self.connection.cursor() command = 'DELETE from {table} where reference LIKE (?);'.format(table=PUBLISHED_REFERENCES) c.execute(command, ("%{}%".format(ser_version),)) self.connection.commit()
def upsert(self, ID, value, table): serial_value = serialize(value) self._generic_write(table, ID, encode_serialized_value(serial_value), 'id', 'blob', 'INSERT OR REPLACE')
def update(self, ID, value, table): self._generic_write(table, ID, encode_serialized_value(serialize(value)), 'id', 'blob', 'REPLACE')
def create(self, ID, value, table): self._generic_write(table, ID, encode_serialized_value(serialize(value)), 'id', 'blob', 'INSERT')
def upsert(self, ID, value, table): serial_value = serialize(value) self._generic_write(table, ID, encode_serialized_value(serial_value), 'id', 'blob', 'INSERT OR REPLACE')
def update(self, ID, value, table): self._generic_write(table, ID, encode_serialized_value(serialize(value)), 'id', 'blob', 'REPLACE')
def create(self, ID, value, table): self._generic_write(table, ID, encode_serialized_value(serialize(value)), 'id', 'blob', 'INSERT')
def set_dep_table(self, block_version, dep_table): assert isinstance(dep_table, BlockVersionTable) ID = encode_serialized_value(block_version.serialize()) self.create(ID, dep_table, DEP_TABLES)
def get_dep_table(self, block_version): ID = encode_serialized_value(block_version.serialize()) return self.read(ID, DEP_TABLES, BlockVersionTable)
def upsert_delta_info(self, block_version, delta_info): """Snapshot is a list with cell names for an specific block version ''' """ # Don't store origin info in localdb (url field crashes because of ://) delta_info.origin = None ID = encode_serialized_value(block_version.serialize()) self.upsert(ID, delta_info, DELTAS)
def get_delta_info(self, block_version): ID = encode_serialized_value(block_version.serialize()) return self.read(ID, DELTAS, BlockDelta)
def create_cells_snapshot(self, block_version, snapshot): """Snapshot is a list with cell names for an specific block version ''' """ ID = encode_serialized_value(block_version.serialize()) self.create(ID, snapshot, SNAPSHOTS)
def get_cells_snapshot(self, block_version): ID = encode_serialized_value(block_version.serialize()) return self.read(ID, SNAPSHOTS, ListDeserializer(CellName))