Changeset View
Changeset View
Standalone View
Standalone View
swh/storage/in_memory.py
Show First 20 Lines • Show All 912 Lines • ▼ Show 20 Lines | def origin_visit_get_by(self, origin: str, visit: int) -> Optional[Dict[str, Any]]: | ||||
visit_update = self._origin_visit_get_updated(origin_url, visit) | visit_update = self._origin_visit_get_updated(origin_url, visit) | ||||
assert visit_update is not None | assert visit_update is not None | ||||
return visit_update.to_dict() | return visit_update.to_dict() | ||||
return None | return None | ||||
def origin_visit_get_latest( | def origin_visit_get_latest( | ||||
self, | self, | ||||
origin: str, | origin: str, | ||||
type: Optional[str] = None, | |||||
allowed_statuses: Optional[List[str]] = None, | allowed_statuses: Optional[List[str]] = None, | ||||
require_snapshot: bool = False, | require_snapshot: bool = False, | ||||
) -> Optional[Dict[str, Any]]: | ) -> Optional[Dict[str, Any]]: | ||||
ori = self._origins.get(origin) | ori = self._origins.get(origin) | ||||
if not ori: | if not ori: | ||||
return None | return None | ||||
visits = self._origin_visits[ori.url] | visits = self._origin_visits[ori.url] | ||||
visits = [ | visits = [ | ||||
self._origin_visit_get_updated(visit.origin, visit.visit) | self._origin_visit_get_updated(visit.origin, visit.visit) | ||||
for visit in visits | for visit in visits | ||||
if visit is not None | if visit is not None | ||||
] | ] | ||||
if type is not None: | |||||
visits = [visit for visit in visits if visit.type == type] | |||||
if allowed_statuses is not None: | if allowed_statuses is not None: | ||||
visits = [visit for visit in visits if visit.status in allowed_statuses] | visits = [visit for visit in visits if visit.status in allowed_statuses] | ||||
if require_snapshot: | if require_snapshot: | ||||
visits = [visit for visit in visits if visit.snapshot] | visits = [visit for visit in visits if visit.snapshot] | ||||
visit = max(visits, key=lambda v: (v.date, v.visit), default=None) | visit = max(visits, key=lambda v: (v.date, v.visit), default=None) | ||||
if visit is None: | if visit is None: | ||||
return None | return None | ||||
▲ Show 20 Lines • Show All 266 Lines • Show Last 20 Lines |