Changeset View
Changeset View
Standalone View
Standalone View
swh/storage/cassandra/converters.py
# Copyright (C) 2019-2020 The Software Heritage developers | # Copyright (C) 2019-2020 The Software Heritage developers | ||||
# See the AUTHORS file at the top-level directory of this distribution | # See the AUTHORS file at the top-level directory of this distribution | ||||
# License: GNU General Public License version 3, or any later version | # License: GNU General Public License version 3, or any later version | ||||
# See top-level LICENSE file for more information | # See top-level LICENSE file for more information | ||||
from copy import deepcopy | from copy import deepcopy | ||||
import json | import json | ||||
from typing import Any, Dict, List | from typing import Any, Dict, Tuple | ||||
import attr | import attr | ||||
from swh.model.model import ( | from swh.model.model import ( | ||||
RevisionType, | RevisionType, | ||||
ObjectType, | ObjectType, | ||||
Revision, | Revision, | ||||
Release, | Release, | ||||
Show All 16 Lines | if metadata and "extra_headers" in metadata: | ||||
db_revision["metadata"]["extra_headers"] = git_headers_to_db( | db_revision["metadata"]["extra_headers"] = git_headers_to_db( | ||||
metadata["extra_headers"] | metadata["extra_headers"] | ||||
) | ) | ||||
db_revision["metadata"] = json.dumps(db_revision["metadata"]) | db_revision["metadata"] = json.dumps(db_revision["metadata"]) | ||||
db_revision["type"] = db_revision["type"].value | db_revision["type"] = db_revision["type"].value | ||||
return db_revision | return db_revision | ||||
def revision_from_db(db_revision: Row, parents: List[Sha1Git]) -> Revision: | def revision_from_db(db_revision: Row, parents: Tuple[Sha1Git]) -> Revision: | ||||
revision = db_revision._asdict() # type: ignore | revision = db_revision._asdict() # type: ignore | ||||
metadata = json.loads(revision.pop("metadata", None)) | metadata = json.loads(revision.pop("metadata", None)) | ||||
if metadata and "extra_headers" in metadata: | if metadata and "extra_headers" in metadata: | ||||
extra_headers = db_to_git_headers(metadata["extra_headers"]) | extra_headers = db_to_git_headers(metadata["extra_headers"]) | ||||
metadata["extra_headers"] = extra_headers | metadata["extra_headers"] = extra_headers | ||||
return Revision( | return Revision( | ||||
parents=parents, | parents=parents, | ||||
type=RevisionType(revision.pop("type")), | type=RevisionType(revision.pop("type")), | ||||
Show All 24 Lines |