Changeset View
Changeset View
Standalone View
Standalone View
swh/storage/cassandra/storage.py
Show First 20 Lines • Show All 879 Lines • ▼ Show 20 Lines | def origin_visit_get_by(self, origin: str, visit: int) -> Optional[Dict[str, Any]]: | ||||
return None | return None | ||||
def origin_visit_get_latest( | def origin_visit_get_latest( | ||||
self, | self, | ||||
origin: str, | origin: str, | ||||
type: Optional[str] = None, | 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[OriginVisit]: | ||||
# TODO: Do not fetch all visits | # TODO: Do not fetch all visits | ||||
rows = self._cql_runner.origin_visit_get_all(origin) | rows = self._cql_runner.origin_visit_get_all(origin) | ||||
latest_visit = None | latest_visit = None | ||||
for row in rows: | for row in rows: | ||||
visit = self._format_origin_visit_row(row) | visit = self._format_origin_visit_row(row) | ||||
updated_visit = self._origin_visit_apply_last_status(visit) | updated_visit = self._origin_visit_apply_last_status(visit) | ||||
if type is not None and updated_visit["type"] != type: | if type is not None and updated_visit["type"] != type: | ||||
continue | continue | ||||
if allowed_statuses and updated_visit["status"] not in allowed_statuses: | if allowed_statuses and updated_visit["status"] not in allowed_statuses: | ||||
continue | continue | ||||
if require_snapshot and updated_visit["snapshot"] is None: | if require_snapshot and updated_visit["snapshot"] is None: | ||||
continue | continue | ||||
# updated_visit is a candidate | # updated_visit is a candidate | ||||
if latest_visit is not None: | if latest_visit is not None: | ||||
if updated_visit["date"] < latest_visit["date"]: | if updated_visit["date"] < latest_visit["date"]: | ||||
continue | continue | ||||
if updated_visit["visit"] < latest_visit["visit"]: | if updated_visit["visit"] < latest_visit["visit"]: | ||||
continue | continue | ||||
latest_visit = updated_visit | latest_visit = updated_visit | ||||
return latest_visit | if latest_visit is None: | ||||
return None | |||||
return OriginVisit( | |||||
origin=latest_visit["origin"], | |||||
visit=latest_visit["visit"], | |||||
date=latest_visit["date"], | |||||
type=latest_visit["type"], | |||||
) | |||||
def origin_visit_status_get_latest( | def origin_visit_status_get_latest( | ||||
self, | self, | ||||
origin_url: str, | origin_url: str, | ||||
visit: int, | visit: int, | ||||
allowed_statuses: Optional[List[str]] = None, | allowed_statuses: Optional[List[str]] = None, | ||||
require_snapshot: bool = False, | require_snapshot: bool = False, | ||||
) -> Optional[OriginVisitStatus]: | ) -> Optional[OriginVisitStatus]: | ||||
▲ Show 20 Lines • Show All 234 Lines • Show Last 20 Lines |