Changeset View
Changeset View
Standalone View
Standalone View
swh/storage/cassandra/storage.py
Show First 20 Lines • Show All 506 Lines • ▼ Show 20 Lines | class CassandraStorage: | ||||
def revision_shortlog(self, revisions, limit=None): | def revision_shortlog(self, revisions, limit=None): | ||||
seen = set() | seen = set() | ||||
yield from self._get_parent_revs(revisions, seen, limit, True) | yield from self._get_parent_revs(revisions, seen, limit, True) | ||||
def revision_get_random(self): | def revision_get_random(self): | ||||
return self._cql_runner.revision_get_random().id | return self._cql_runner.revision_get_random().id | ||||
def release_add(self, releases: Iterable[Release]) -> Dict: | def release_add(self, releases: Iterable[Release]) -> Dict: | ||||
missing = self.release_missing([rel.id for rel in releases]) | to_add = [] | ||||
releases = [rel for rel in releases if rel.id in missing] | for rel in releases: | ||||
if rel not in to_add: | |||||
to_add.append(rel) | |||||
missing = set(self.release_missing([rel.id for rel in to_add])) | |||||
to_add = [rel for rel in to_add if rel.id in missing] | |||||
self.journal_writer.release_add(releases) | self.journal_writer.release_add(to_add) | ||||
for release in releases: | for release in to_add: | ||||
if release: | if release: | ||||
self._cql_runner.release_add_one(release_to_db(release)) | self._cql_runner.release_add_one(release_to_db(release)) | ||||
return {"release:add": len(missing)} | return {"release:add": len(to_add)} | ||||
def release_missing(self, releases): | def release_missing(self, releases): | ||||
return self._cql_runner.release_missing(releases) | return self._cql_runner.release_missing(releases) | ||||
def release_get(self, releases): | def release_get(self, releases): | ||||
rows = self._cql_runner.release_get(releases) | rows = self._cql_runner.release_get(releases) | ||||
rels = {} | rels = {} | ||||
for row in rows: | for row in rows: | ||||
▲ Show 20 Lines • Show All 633 Lines • Show Last 20 Lines |