Changeset View
Changeset View
Standalone View
Standalone View
swh/storage/cassandra/storage.py
Show First 20 Lines • Show All 1,611 Lines • ▼ Show 20 Lines | def extid_add(self, ids: List[ExtID]) -> Dict[str, int]: | ||||
extids = list(ids) | extids = list(ids) | ||||
self.journal_writer.extid_add(extids) | self.journal_writer.extid_add(extids) | ||||
inserted = 0 | inserted = 0 | ||||
for extid in extids: | for extid in extids: | ||||
target_type = extid.target.object_type.value | target_type = extid.target.object_type.value | ||||
target = extid.target.object_id | target = extid.target.object_id | ||||
extid_version = extid.extid_version | |||||
extid_type = extid.extid_type | |||||
extidrow = ExtIDRow( | extidrow = ExtIDRow( | ||||
extid_type=extid.extid_type, | extid_type=extid_type, | ||||
extid_version=extid.extid_version, | extid_version=extid_version, | ||||
extid=extid.extid, | extid=extid.extid, | ||||
target_type=target_type, | target_type=target_type, | ||||
target=target, | target=target, | ||||
) | ) | ||||
(token, insertion_finalizer) = self._cql_runner.extid_add_prepare(extidrow) | (token, insertion_finalizer) = self._cql_runner.extid_add_prepare(extidrow) | ||||
indexrow = ExtIDByTargetRow( | indexrow = ExtIDByTargetRow( | ||||
target_type=target_type, target=target, target_token=token, | target_type=target_type, target=target, target_token=token, | ||||
) | ) | ||||
self._cql_runner.extid_index_add_one(indexrow) | self._cql_runner.extid_index_add_one(indexrow) | ||||
insertion_finalizer() | insertion_finalizer() | ||||
inserted += 1 | inserted += 1 | ||||
return {"extid:add": inserted} | return {"extid:add": inserted} | ||||
@timed | @timed | ||||
def extid_get_from_extid(self, id_type: str, ids: List[bytes]) -> List[ExtID]: | def extid_get_from_extid( | ||||
self, id_type: str, ids: List[bytes], version: Optional[int] = None | |||||
) -> List[ExtID]: | |||||
result: List[ExtID] = [] | result: List[ExtID] = [] | ||||
for extid in ids: | for extid in ids: | ||||
extidrows = list(self._cql_runner.extid_get_from_extid(id_type, extid)) | if version is not None: | ||||
extidrows = self._cql_runner.extid_get_from_extid_and_version( | |||||
id_type, extid, version | |||||
) | |||||
else: | |||||
extidrows = self._cql_runner.extid_get_from_extid(id_type, extid) | |||||
result.extend( | result.extend( | ||||
ExtID( | ExtID( | ||||
extid_type=extidrow.extid_type, | extid_type=extidrow.extid_type, | ||||
extid_version=extidrow.extid_version, | extid_version=extidrow.extid_version, | ||||
extid=extidrow.extid, | extid=extidrow.extid, | ||||
target=CoreSWHID( | target=CoreSWHID( | ||||
object_type=extidrow.target_type, object_id=extidrow.target, | object_type=extidrow.target_type, object_id=extidrow.target, | ||||
), | ), | ||||
) | ) | ||||
for extidrow in extidrows | for extidrow in extidrows | ||||
) | ) | ||||
return result | return result | ||||
@timed | @timed | ||||
def extid_get_from_target( | def extid_get_from_target( | ||||
self, target_type: SwhidObjectType, ids: List[Sha1Git] | self, | ||||
target_type: SwhidObjectType, | |||||
ids: List[Sha1Git], | |||||
extid_type: Optional[str] = None, | |||||
extid_version: Optional[int] = None, | |||||
) -> List[ExtID]: | ) -> List[ExtID]: | ||||
if (extid_version is not None and extid_type is None) or ( | |||||
extid_version is None and extid_type is not None | |||||
): | |||||
raise ValueError("You must provide both extid_type and extid_version") | |||||
result: List[ExtID] = [] | result: List[ExtID] = [] | ||||
for target in ids: | for target in ids: | ||||
extidrows = list( | extidrows = self._cql_runner.extid_get_from_target( | ||||
self._cql_runner.extid_get_from_target(target_type.value, target) | target_type.value, | ||||
target, | |||||
extid_type=extid_type, | |||||
extid_version=extid_version, | |||||
) | ) | ||||
result.extend( | result.extend( | ||||
ExtID( | ExtID( | ||||
extid_type=extidrow.extid_type, | extid_type=extidrow.extid_type, | ||||
extid_version=extidrow.extid_version, | extid_version=extidrow.extid_version, | ||||
extid=extidrow.extid, | extid=extidrow.extid, | ||||
target=CoreSWHID( | target=CoreSWHID( | ||||
object_type=SwhidObjectType(extidrow.target_type), | object_type=SwhidObjectType(extidrow.target_type), | ||||
object_id=extidrow.target, | object_id=extidrow.target, | ||||
Show All 15 Lines |