Changeset View
Changeset View
Standalone View
Standalone View
swh/storage/in_memory.py
Show First 20 Lines • Show All 1,133 Lines • ▼ Show 20 Lines | def fetch_history_end(self, fetch_history_id, data): | ||||
pass | pass | ||||
def fetch_history_get(self, fetch_history_id): | def fetch_history_get(self, fetch_history_id): | ||||
"""Get the fetch_history entry with id `fetch_history_id`. | """Get the fetch_history entry with id `fetch_history_id`. | ||||
""" | """ | ||||
raise NotImplementedError('fetch_history_get is deprecated, use ' | raise NotImplementedError('fetch_history_get is deprecated, use ' | ||||
'origin_visit_get instead.') | 'origin_visit_get instead.') | ||||
def origin_visit_add(self, origin, date=None, *, ts=None): | def origin_visit_add(self, origin, date=None, type=None, *, ts=None): | ||||
"""Add an origin_visit for the origin at date with status 'ongoing'. | """Add an origin_visit for the origin at date with status 'ongoing'. | ||||
For backward compatibility, `type` is optional and defaults to | |||||
the origin's type. | |||||
Args: | Args: | ||||
origin (int): visited origin's identifier | origin (int): visited origin's identifier | ||||
date: timestamp of such visit | date: timestamp of such visit | ||||
type (str): the type of loader used for the visit (hg, git, ...) | |||||
Returns: | Returns: | ||||
dict: dictionary with keys origin and visit where: | dict: dictionary with keys origin and visit where: | ||||
- origin: origin's identifier | - origin: origin's identifier | ||||
- visit: the visit's identifier for the new visit occurrence | - visit: the visit's identifier for the new visit occurrence | ||||
""" | """ | ||||
Show All 15 Lines | def origin_visit_add(self, origin, date=None, type=None, *, ts=None): | ||||
visit_ret = None | visit_ret = None | ||||
if origin_id <= len(self._origin_visits): | if origin_id <= len(self._origin_visits): | ||||
# visit ids are in the range [1, +inf[ | # visit ids are in the range [1, +inf[ | ||||
visit_id = len(self._origin_visits[origin_id-1]) + 1 | visit_id = len(self._origin_visits[origin_id-1]) + 1 | ||||
status = 'ongoing' | status = 'ongoing' | ||||
visit = { | visit = { | ||||
'origin': origin_id, | 'origin': origin_id, | ||||
'date': date, | 'date': date, | ||||
'type': type or self._origins[origin_id-1]['type'], | |||||
'status': status, | 'status': status, | ||||
'snapshot': None, | 'snapshot': None, | ||||
'metadata': None, | 'metadata': None, | ||||
'visit': visit_id | 'visit': visit_id | ||||
} | } | ||||
self._origin_visits[origin_id-1].append(visit) | self._origin_visits[origin_id-1].append(visit) | ||||
visit_ret = { | visit_ret = { | ||||
'origin': origin_id, | 'origin': origin_id, | ||||
Show All 29 Lines | def origin_visit_update(self, origin, visit_id, status=None, | ||||
try: | try: | ||||
visit = self._origin_visits[origin_id-1][visit_id-1] | visit = self._origin_visits[origin_id-1][visit_id-1] | ||||
except IndexError: | except IndexError: | ||||
raise ValueError('Invalid origin_id or visit_id') from None | raise ValueError('Invalid origin_id or visit_id') from None | ||||
if self.journal_writer: | if self.journal_writer: | ||||
origin = self.origin_get([{'id': origin_id}])[0] | origin = self.origin_get([{'id': origin_id}])[0] | ||||
del origin['id'] | del origin['id'] | ||||
self.journal_writer.write_update('origin_visit', { | self.journal_writer.write_update('origin_visit', { | ||||
'origin': origin, 'visit': visit_id, | 'origin': origin, 'type': origin['type'], | ||||
'visit': visit_id, | |||||
'status': status or visit['status'], | 'status': status or visit['status'], | ||||
'date': visit['date'], | 'date': visit['date'], | ||||
'metadata': metadata or visit['metadata'], | 'metadata': metadata or visit['metadata'], | ||||
'snapshot': snapshot or visit['snapshot']}) | 'snapshot': snapshot or visit['snapshot']}) | ||||
if origin_id > len(self._origin_visits) or \ | if origin_id > len(self._origin_visits) or \ | ||||
visit_id > len(self._origin_visits[origin_id-1]): | visit_id > len(self._origin_visits[origin_id-1]): | ||||
return | return | ||||
if status: | if status: | ||||
visit['status'] = status | visit['status'] = status | ||||
if metadata: | if metadata: | ||||
visit['metadata'] = metadata | visit['metadata'] = metadata | ||||
if snapshot: | if snapshot: | ||||
visit['snapshot'] = snapshot | visit['snapshot'] = snapshot | ||||
def origin_visit_upsert(self, visits): | def origin_visit_upsert(self, visits): | ||||
"""Add a origin_visits with a specific id and with all its data. | """Add a origin_visits with a specific id and with all its data. | ||||
If there is already an origin_visit with the same | If there is already an origin_visit with the same | ||||
`(origin_id, visit_id)`, updates it instead of inserting a new one. | `(origin_id, visit_id)`, updates it instead of inserting a new one. | ||||
Args: | Args: | ||||
visits: iterable of dicts with keys: | visits: iterable of dicts with keys: | ||||
origin: Visited Origin id | origin: Visited Origin id | ||||
visit: origin visit id | visit: origin visit id | ||||
type: type of loader used for the visit | |||||
date: timestamp of such visit | date: timestamp of such visit | ||||
status: Visit's new status | status: Visit's new status | ||||
metadata: Data associated to the visit | metadata: Data associated to the visit | ||||
snapshot (sha1_git): identifier of the snapshot to add to | snapshot (sha1_git): identifier of the snapshot to add to | ||||
the visit | the visit | ||||
""" | """ | ||||
visits = copy.deepcopy(visits) | visits = copy.deepcopy(visits) | ||||
for visit in visits: | for visit in visits: | ||||
▲ Show 20 Lines • Show All 300 Lines • Show Last 20 Lines |