Changeset View
Changeset View
Standalone View
Standalone View
swh/storage/storage.py
Show First 20 Lines • Show All 835 Lines • ▼ Show 20 Lines | def origin_visit_add( | ||||
}) | }) | ||||
self.journal_writer.origin_visit_add(visit) | self.journal_writer.origin_visit_add(visit) | ||||
send_metric('origin_visit:add', count=1, method_name='origin_visit') | send_metric('origin_visit:add', count=1, method_name='origin_visit') | ||||
return visit | return visit | ||||
@timed | @timed | ||||
@db_transaction() | @db_transaction() | ||||
def origin_visit_update(self, origin: Origin, visit: OriginVisit, | def origin_visit_update(self, visit: OriginVisit, | ||||
status: Optional[str] = None, | status: Optional[str] = None, | ||||
metadata: Optional[Dict] = None, | metadata: Optional[Dict] = None, | ||||
snapshot: Optional[bytes] = None, | snapshot: Optional[bytes] = None, | ||||
db=None, cur=None) -> None: | db=None, cur=None) -> None: | ||||
visit_row = db.origin_visit_get( | visit_row = db.origin_visit_get( | ||||
origin.url, visit.visit, cur=cur) | visit.origin, visit.visit, cur=cur) | ||||
if not visit_row: | if not visit_row: | ||||
raise StorageArgumentException( | raise StorageArgumentException( | ||||
'origin visit %s for origin %s does not exist.', | 'origin visit %s for origin %s does not exist.', | ||||
visit.visit, origin.url) | visit.visit, visit.origin) | ||||
visit_to_update = OriginVisit.from_dict( | visit_to_update = OriginVisit.from_dict( | ||||
dict(zip(db.origin_visit_get_cols, visit_row))) | dict(zip(db.origin_visit_get_cols, visit_row))) | ||||
updates: Dict[str, Any] = {} | updates: Dict[str, Any] = {} | ||||
if status and status != visit.status: | if status and status != visit.status: | ||||
updates['status'] = status | updates['status'] = status | ||||
if metadata and metadata != visit.metadata: | if metadata and metadata != visit.metadata: | ||||
updates['metadata'] = metadata | updates['metadata'] = metadata | ||||
if snapshot and snapshot != visit.snapshot: | if snapshot and snapshot != visit.snapshot: | ||||
updates['snapshot'] = snapshot | updates['snapshot'] = snapshot | ||||
if updates: | if updates: | ||||
try: | try: | ||||
visit_to_update = attr.evolve(visit, **updates) | visit_to_update = attr.evolve(visit, **updates) | ||||
except (KeyError, TypeError, ValueError) as e: | except (KeyError, TypeError, ValueError) as e: | ||||
raise StorageArgumentException(*e.args) | raise StorageArgumentException(*e.args) | ||||
self.journal_writer.origin_visit_update(visit_to_update) | self.journal_writer.origin_visit_update(visit_to_update) | ||||
with convert_validation_exceptions(): | with convert_validation_exceptions(): | ||||
db.origin_visit_update( | db.origin_visit_update( | ||||
origin.url, visit.visit, updates, cur=cur) | visit.origin, visit.visit, updates, cur=cur) | ||||
@timed | @timed | ||||
@db_transaction() | @db_transaction() | ||||
def origin_visit_upsert(self, visits: Iterable[OriginVisit], | def origin_visit_upsert(self, visits: Iterable[OriginVisit], | ||||
db=None, cur=None) -> None: | db=None, cur=None) -> None: | ||||
self.journal_writer.origin_visit_upsert(visits) | self.journal_writer.origin_visit_upsert(visits) | ||||
for visit in visits: | for visit in visits: | ||||
▲ Show 20 Lines • Show All 275 Lines • Show Last 20 Lines |