Changeset View
Changeset View
Standalone View
Standalone View
swh/storage/in_memory.py
Show First 20 Lines • Show All 792 Lines • ▼ Show 20 Lines | def origin_visit_add(self, visits: Iterable[OriginVisit]) -> Iterable[OriginVisit]: | ||||
origin_url = visit.origin | origin_url = visit.origin | ||||
if origin_url in self._origins: | if origin_url in self._origins: | ||||
origin = self._origins[origin_url] | origin = self._origins[origin_url] | ||||
if visit.visit: | if visit.visit: | ||||
self.journal_writer.origin_visit_add([visit]) | self.journal_writer.origin_visit_add([visit]) | ||||
while len(self._origin_visits[origin_url]) < visit.visit: | while len(self._origin_visits[origin_url]) < visit.visit: | ||||
self._origin_visits[origin_url].append(None) | self._origin_visits[origin_url].append(None) | ||||
self._origin_visits[origin_url][visit.visit - 1] = visit | self._origin_visits[origin_url][visit.visit - 1] = visit | ||||
visit_status_dict = visit.to_dict() | |||||
visit_status_dict.pop("type") | |||||
visit_status = OriginVisitStatus.from_dict(visit_status_dict) | |||||
self._origin_visit_status_add_one(visit_status) | |||||
else: | else: | ||||
# visit ids are in the range [1, +inf[ | # visit ids are in the range [1, +inf[ | ||||
visit_id = len(self._origin_visits[origin_url]) + 1 | visit_id = len(self._origin_visits[origin_url]) + 1 | ||||
visit = attr.evolve(visit, visit=visit_id) | visit = attr.evolve(visit, visit=visit_id) | ||||
self.journal_writer.origin_visit_add([visit]) | self.journal_writer.origin_visit_add([visit]) | ||||
self._origin_visits[origin_url].append(visit) | self._origin_visits[origin_url].append(visit) | ||||
visit_key = (origin_url, visit.visit) | visit_key = (origin_url, visit.visit) | ||||
visit_status_dict = visit.to_dict() | |||||
visit_status_dict.pop("type") | |||||
visit_status = OriginVisitStatus.from_dict(visit_status_dict) | |||||
self._origin_visit_status_add_one(visit_status) | |||||
self._objects[visit_key].append(("origin_visit", None)) | self._objects[visit_key].append(("origin_visit", None)) | ||||
assert visit.visit is not None | assert visit.visit is not None | ||||
self._origin_visit_status_add_one( | |||||
OriginVisitStatus( | |||||
origin=visit.origin, | |||||
visit=visit.visit, | |||||
date=visit.date, | |||||
status="created", | |||||
snapshot=None, | |||||
) | |||||
) | |||||
all_visits.append(visit) | all_visits.append(visit) | ||||
return all_visits | return all_visits | ||||
def _origin_visit_status_add_one(self, visit_status: OriginVisitStatus) -> None: | def _origin_visit_status_add_one(self, visit_status: OriginVisitStatus) -> None: | ||||
"""Add an origin visit status without checks. If already present, do nothing. | """Add an origin visit status without checks. If already present, do nothing. | ||||
""" | """ | ||||
▲ Show 20 Lines • Show All 376 Lines • Show Last 20 Lines |