diff --git a/swh/storage/in_memory.py b/swh/storage/in_memory.py --- a/swh/storage/in_memory.py +++ b/swh/storage/in_memory.py @@ -87,6 +87,7 @@ for content in contents: key = self._content_key(content) if key in self._contents: + self._objects[key].append(('skipped_content', content['sha1'])) continue for algorithm in DEFAULT_ALGORITHMS: if content[algorithm] in self._content_indexes[algorithm]: @@ -103,6 +104,7 @@ content_data = self._contents[key].pop('data') self.objstorage.add(content_data, content['sha1']) + def content_get(self, ids): """Retrieve in bulk contents and their data. @@ -137,6 +139,7 @@ yield {'sha1': obj_id, 'data': data} + def content_get_range(self, start, end, limit=1000, db=None, cur=None): """Retrieve contents within range [start, end] bound by limit. @@ -1015,11 +1018,11 @@ raise NotImplementedError('fetch_history_get is deprecated, use ' 'origin_visit_get instead.') - def origin_visit_add(self, origin, date=None, *, ts=None): + def origin_visit_add(self, origin_id, date=None, *, ts=None): """Add an origin_visit for the origin at date with status 'ongoing'. Args: - origin (int): visited origin's identifier + origin_id (int): visited origin's identifier date: timestamp of such visit Returns: @@ -1039,7 +1042,7 @@ DeprecationWarning) date = ts - origin_id = origin # TODO: rename the argument + # origin_id = origin # TODO: rename the argument if isinstance(date, str): date = dateutil.parser.parse(date) @@ -1063,6 +1066,9 @@ 'visit': visit_id, } + key = (origin_id, visit_id) + self._objects[key].append(('origin_visit', origin_id)) + if self.journal_writer: origin = self.origin_get([{'id': origin_id}])[0] self.journal_writer.write_addition('origin_visit', { @@ -1070,6 +1076,7 @@ return visit_ret + def origin_visit_update(self, origin, visit_id, status=None, metadata=None, snapshot=None): """Update an origin_visit's status. @@ -1370,12 +1377,13 @@ if key not in self._objects: person_id = len(self._persons) + 1 self._persons.append(dict(person)) - self._objects[key].append(('person', person_id)) else: person_id = self._objects[key][0][1] p = next(self.person_get([person_id])) person.update(p.items()) + # self._objects[key].append(('person', person_id)) person['id'] = person_id + self._objects[key].append(('person', person_id)) @staticmethod def _content_key(content):