diff --git a/swh/loader/core/loader.py b/swh/loader/core/loader.py --- a/swh/loader/core/loader.py +++ b/swh/loader/core/loader.py @@ -236,11 +236,10 @@ """ raise NotImplementedError - def store_data(self): - """Store fetched data in the database. + def store_data(self, more_data_to_fetch: bool = False): + """Store fetched data in the database. The more_data_to_fetch boolean should help in + deciding whether to create the snapshot or not. - Should call the :func:`maybe_load_xyz` methods, which handle the - bundles sent to storage, rather than send directly. """ raise NotImplementedError @@ -336,7 +335,7 @@ while True: more_data_to_fetch = self.fetch_data() - self.store_data() + self.store_data(more_data_to_fetch) if not more_data_to_fetch: break @@ -440,7 +439,7 @@ """Whether the load was eventful""" raise NotImplementedError - def store_data(self) -> None: + def store_data(self, more_data_to_fetch: bool = False) -> None: assert self.origin if self.save_data_path: self.save_data() @@ -462,7 +461,9 @@ if self.has_releases(): for release in self.get_releases(): self.storage.release_add([release]) - snapshot = self.get_snapshot() - self.storage.snapshot_add([snapshot]) + + if not more_data_to_fetch: + snapshot = self.get_snapshot() + self.storage.snapshot_add([snapshot]) + self.loaded_snapshot_id = snapshot.id self.flush() - self.loaded_snapshot_id = snapshot.id diff --git a/swh/loader/core/tests/test_loader.py b/swh/loader/core/tests/test_loader.py --- a/swh/loader/core/tests/test_loader.py +++ b/swh/loader/core/tests/test_loader.py @@ -73,7 +73,7 @@ """ - def store_data(self): + def store_data(self, more_data_to_fetch: bool = False): pass