Changeset View
Changeset View
Standalone View
Standalone View
swh/storage/in_memory.py
Show First 20 Lines • Show All 523 Lines • ▼ Show 20 Lines | class InMemoryStorage: | ||||
def release_get_random(self): | def release_get_random(self): | ||||
return random.choice(list(self._releases)) | return random.choice(list(self._releases)) | ||||
def snapshot_add(self, snapshots: Iterable[Snapshot]) -> Dict: | def snapshot_add(self, snapshots: Iterable[Snapshot]) -> Dict: | ||||
count = 0 | count = 0 | ||||
snapshots = (snap for snap in snapshots if snap.id not in self._snapshots) | snapshots = (snap for snap in snapshots if snap.id not in self._snapshots) | ||||
for snapshot in snapshots: | for snapshot in snapshots: | ||||
self.journal_writer.snapshot_add(snapshot) | self.journal_writer.snapshot_add([snapshot]) | ||||
sorted_branch_names = sorted(snapshot.branches) | sorted_branch_names = sorted(snapshot.branches) | ||||
self._snapshots[snapshot.id] = (snapshot, sorted_branch_names) | self._snapshots[snapshot.id] = (snapshot, sorted_branch_names) | ||||
self._objects[snapshot.id].append(("snapshot", snapshot.id)) | self._objects[snapshot.id].append(("snapshot", snapshot.id)) | ||||
count += 1 | count += 1 | ||||
return {"snapshot:add": count} | return {"snapshot:add": count} | ||||
def snapshot_missing(self, snapshots): | def snapshot_missing(self, snapshots): | ||||
▲ Show 20 Lines • Show All 210 Lines • ▼ Show 20 Lines | class InMemoryStorage: | ||||
def origin_add(self, origins: Iterable[Origin]) -> List[Dict]: | def origin_add(self, origins: Iterable[Origin]) -> List[Dict]: | ||||
origins = copy.deepcopy(list(origins)) | origins = copy.deepcopy(list(origins)) | ||||
for origin in origins: | for origin in origins: | ||||
self.origin_add_one(origin) | self.origin_add_one(origin) | ||||
return [origin.to_dict() for origin in origins] | return [origin.to_dict() for origin in origins] | ||||
def origin_add_one(self, origin: Origin) -> str: | def origin_add_one(self, origin: Origin) -> str: | ||||
if origin.url not in self._origins: | if origin.url not in self._origins: | ||||
self.journal_writer.origin_add_one(origin) | self.journal_writer.origin_add([origin]) | ||||
# generate an origin_id because it is needed by origin_get_range. | # generate an origin_id because it is needed by origin_get_range. | ||||
# TODO: remove this when we remove origin_get_range | # TODO: remove this when we remove origin_get_range | ||||
origin_id = len(self._origins) + 1 | origin_id = len(self._origins) + 1 | ||||
self._origins_by_id.append(origin.url) | self._origins_by_id.append(origin.url) | ||||
assert len(self._origins_by_id) == origin_id | assert len(self._origins_by_id) == origin_id | ||||
self._origins[origin.url] = origin | self._origins[origin.url] = origin | ||||
self._origins_by_sha1[origin_url_to_sha1(origin.url)] = origin | self._origins_by_sha1[origin_url_to_sha1(origin.url)] = origin | ||||
▲ Show 20 Lines • Show All 43 Lines • ▼ Show 20 Lines | ) -> OriginVisit: | ||||
status=status, | status=status, | ||||
snapshot=None, | snapshot=None, | ||||
metadata=None, | metadata=None, | ||||
) | ) | ||||
self._origin_visit_statuses[visit_key] = [visit_update] | self._origin_visit_statuses[visit_key] = [visit_update] | ||||
self._objects[visit_key].append(("origin_visit", None)) | self._objects[visit_key].append(("origin_visit", None)) | ||||
self.journal_writer.origin_visit_add(visit) | self.journal_writer.origin_visit_add([visit]) | ||||
# return last visit | # return last visit | ||||
return visit | return visit | ||||
def origin_visit_update( | def origin_visit_update( | ||||
self, | self, | ||||
origin: str, | origin: str, | ||||
visit_id: int, | visit_id: int, | ||||
Show All 26 Lines | ): | ||||
date=date or now(), | date=date or now(), | ||||
status=status, | status=status, | ||||
snapshot=snapshot or last_visit_update.snapshot, | snapshot=snapshot or last_visit_update.snapshot, | ||||
metadata=metadata or last_visit_update.metadata, | metadata=metadata or last_visit_update.metadata, | ||||
) | ) | ||||
self._origin_visit_statuses[visit_key].append(visit_update) | self._origin_visit_statuses[visit_key].append(visit_update) | ||||
self.journal_writer.origin_visit_update( | self.journal_writer.origin_visit_update( | ||||
self._origin_visit_get_updated(origin_url, visit_id) | [self._origin_visit_get_updated(origin_url, visit_id)] | ||||
) | ) | ||||
self._origin_visits[origin_url][visit_id - 1] = visit | self._origin_visits[origin_url][visit_id - 1] = visit | ||||
def origin_visit_upsert(self, visits: Iterable[OriginVisit]) -> None: | def origin_visit_upsert(self, visits: Iterable[OriginVisit]) -> None: | ||||
for visit in visits: | for visit in visits: | ||||
if visit.visit is None: | if visit.visit is None: | ||||
raise StorageArgumentException(f"Missing visit id for visit {visit}") | raise StorageArgumentException(f"Missing visit id for visit {visit}") | ||||
▲ Show 20 Lines • Show All 291 Lines • Show Last 20 Lines |