Changeset View
Changeset View
Standalone View
Standalone View
swh/storage/cassandra/storage.py
Show First 20 Lines • Show All 1,354 Lines • ▼ Show 20 Lines | def extid_add(self, ids: List[ExtID]) -> Dict[str, int]: | ||||
for extid in extids: | for extid in extids: | ||||
extidrow = ExtIDRow( | extidrow = ExtIDRow( | ||||
extid_type=extid.extid_type, | extid_type=extid.extid_type, | ||||
extid=extid.extid, | extid=extid.extid, | ||||
target_type=extid.target.object_type.value, | target_type=extid.target.object_type.value, | ||||
target=extid.target.object_id, | target=extid.target.object_id, | ||||
) | ) | ||||
(token, insertion_finalizer) = self._cql_runner.extid_add_prepare(extidrow) | (token, insertion_finalizer) = self._cql_runner.extid_add_prepare(extidrow) | ||||
if ( | |||||
self.extid_get_from_extid(extid.extid_type, [extid.extid])[0] | |||||
or self.extid_get_from_target( | |||||
extid.target.object_type, [extid.target.object_id] | |||||
)[0] | |||||
): | |||||
# on conflict do nothing... | |||||
continue | |||||
self._cql_runner.extid_index_add_one(extidrow, token) | self._cql_runner.extid_index_add_one(extidrow, token) | ||||
insertion_finalizer() | insertion_finalizer() | ||||
inserted += 1 | inserted += 1 | ||||
return {"extid:add": inserted} | return {"extid:add": inserted} | ||||
def extid_get_from_extid( | def extid_get_from_extid(self, id_type: str, ids: List[bytes]) -> List[ExtID]: | ||||
self, id_type: str, ids: List[bytes] | result: List[ExtID] = [] | ||||
) -> List[Optional[ExtID]]: | |||||
result: List[Optional[ExtID]] = [] | |||||
for extid in ids: | for extid in ids: | ||||
extidrows = list(self._cql_runner.extid_get_from_extid(id_type, extid)) | extidrows = list(self._cql_runner.extid_get_from_extid(id_type, extid)) | ||||
assert len(extidrows) <= 1 | result.extend( | ||||
if extidrows: | |||||
result.append( | |||||
ExtID( | ExtID( | ||||
extid_type=extidrows[0].extid_type, | extid_type=extidrow.extid_type, | ||||
extid=extidrows[0].extid, | extid=extidrow.extid, | ||||
target=CoreSWHID( | target=CoreSWHID( | ||||
object_type=extidrows[0].target_type, | object_type=extidrow.target_type, object_id=extidrow.target, | ||||
object_id=extidrows[0].target, | |||||
), | ), | ||||
) | ) | ||||
for extidrow in extidrows | |||||
) | ) | ||||
else: | |||||
result.append(None) | |||||
return result | return result | ||||
def extid_get_from_target( | def extid_get_from_target( | ||||
self, target_type: SwhidObjectType, ids: List[Sha1Git] | self, target_type: SwhidObjectType, ids: List[Sha1Git] | ||||
) -> List[Optional[ExtID]]: | ) -> List[ExtID]: | ||||
result: List[Optional[ExtID]] = [] | result: List[ExtID] = [] | ||||
for target in ids: | for target in ids: | ||||
extidrows = list( | extidrows = list( | ||||
self._cql_runner.extid_get_from_target(target_type.value, target) | self._cql_runner.extid_get_from_target(target_type.value, target) | ||||
) | ) | ||||
assert len(extidrows) <= 1 | result.extend( | ||||
if extidrows: | |||||
result.append( | |||||
ExtID( | ExtID( | ||||
extid_type=extidrows[0].extid_type, | extid_type=extidrow.extid_type, | ||||
extid=extidrows[0].extid, | extid=extidrow.extid, | ||||
target=CoreSWHID( | target=CoreSWHID( | ||||
object_type=SwhidObjectType(extidrows[0].target_type), | object_type=SwhidObjectType(extidrow.target_type), | ||||
object_id=extidrows[0].target, | object_id=extidrow.target, | ||||
), | ), | ||||
) | ) | ||||
for extidrow in extidrows | |||||
) | ) | ||||
else: | |||||
result.append(None) | |||||
return result | return result | ||||
# Misc | # Misc | ||||
def clear_buffers(self, object_types: Sequence[str] = ()) -> None: | def clear_buffers(self, object_types: Sequence[str] = ()) -> None: | ||||
"""Do nothing | """Do nothing | ||||
""" | """ | ||||
return None | return None | ||||
def flush(self, object_types: Sequence[str] = ()) -> Dict[str, int]: | def flush(self, object_types: Sequence[str] = ()) -> Dict[str, int]: | ||||
return {} | return {} |