Changeset View
Changeset View
Standalone View
Standalone View
swh/storage/cassandra/storage.py
Show First 20 Lines • Show All 575 Lines • ▼ Show 20 Lines | class CassandraStorage: | ||||
def snapshot_missing(self, snapshots): | def snapshot_missing(self, snapshots): | ||||
return self._cql_runner.snapshot_missing(snapshots) | return self._cql_runner.snapshot_missing(snapshots) | ||||
def snapshot_get(self, snapshot_id): | def snapshot_get(self, snapshot_id): | ||||
return self.snapshot_get_branches(snapshot_id) | return self.snapshot_get_branches(snapshot_id) | ||||
def snapshot_get_by_origin_visit(self, origin, visit): | def snapshot_get_by_origin_visit(self, origin, visit): | ||||
try: | visit_status = self.origin_visit_status_get_latest( | ||||
visit = self.origin_visit_get_by(origin, visit) | origin, visit, require_snapshot=True | ||||
except IndexError: | ) | ||||
if not visit_status: | |||||
return None | return None | ||||
return self.snapshot_get(visit_status.snapshot) | |||||
return self.snapshot_get(visit["snapshot"]) | |||||
def snapshot_count_branches(self, snapshot_id): | def snapshot_count_branches(self, snapshot_id): | ||||
if self._cql_runner.snapshot_missing([snapshot_id]): | if self._cql_runner.snapshot_missing([snapshot_id]): | ||||
# Makes sure we don't fetch branches for a snapshot that is | # Makes sure we don't fetch branches for a snapshot that is | ||||
# being added. | # being added. | ||||
return None | return None | ||||
rows = list(self._cql_runner.snapshot_count_branches(snapshot_id)) | rows = list(self._cql_runner.snapshot_count_branches(snapshot_id)) | ||||
assert len(rows) == 1 | assert len(rows) == 1 | ||||
▲ Show 20 Lines • Show All 267 Lines • ▼ Show 20 Lines | ) -> Optional[OriginVisit]: | ||||
def key(visit): | def key(visit): | ||||
dt = visit.date.replace(tzinfo=datetime.timezone.utc) - visit_date | dt = visit.date.replace(tzinfo=datetime.timezone.utc) - visit_date | ||||
return (abs(dt), -visit.visit) | return (abs(dt), -visit.visit) | ||||
if rows: | if rows: | ||||
return converters.row_to_visit(min(rows, key=key)) | return converters.row_to_visit(min(rows, key=key)) | ||||
return None | return None | ||||
def origin_visit_get_by(self, origin: str, visit: int) -> Optional[Dict[str, Any]]: | def origin_visit_get_by(self, origin: str, visit: int) -> Optional[OriginVisit]: | ||||
row = self._cql_runner.origin_visit_get_one(origin, visit) | row = self._cql_runner.origin_visit_get_one(origin, visit) | ||||
if row: | if row: | ||||
visit_ = self._format_origin_visit_row(row) | return converters.row_to_visit(row) | ||||
return self._origin_visit_apply_last_status(visit_) | |||||
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, | ||||
▲ Show 20 Lines • Show All 275 Lines • Show Last 20 Lines |