Changeset View
Changeset View
Standalone View
Standalone View
swh/storage/postgresql/converters.py
# Copyright (C) 2015-2020 The Software Heritage developers | # Copyright (C) 2015-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 | ||||
import datetime | import datetime | ||||
from typing import Any, Dict, Optional | from typing import Any, Dict, Optional | ||||
from swh.core.utils import encode_with_unescape | from swh.core.utils import encode_with_unescape | ||||
from swh.model.identifiers import parse_swhid | |||||
from swh.model.model import ( | from swh.model.model import ( | ||||
MetadataAuthority, | MetadataAuthority, | ||||
MetadataAuthorityType, | MetadataAuthorityType, | ||||
MetadataFetcher, | MetadataFetcher, | ||||
MetadataTargetType, | |||||
ObjectType, | ObjectType, | ||||
Person, | Person, | ||||
RawExtrinsicMetadata, | RawExtrinsicMetadata, | ||||
Release, | Release, | ||||
Revision, | Revision, | ||||
RevisionType, | RevisionType, | ||||
Timestamp, | Timestamp, | ||||
TimestampWithTimezone, | TimestampWithTimezone, | ||||
) | ) | ||||
from ..utils import map_optional | |||||
DEFAULT_AUTHOR = { | DEFAULT_AUTHOR = { | ||||
"fullname": None, | "fullname": None, | ||||
"name": None, | "name": None, | ||||
"email": None, | "email": None, | ||||
} | } | ||||
DEFAULT_DATE = { | DEFAULT_DATE = { | ||||
"timestamp": None, | "timestamp": None, | ||||
▲ Show 20 Lines • Show All 107 Lines • ▼ Show 20 Lines | |||||
def revision_to_db(revision: Revision) -> Dict[str, Any]: | def revision_to_db(revision: Revision) -> Dict[str, Any]: | ||||
"""Convert a swh-model revision to its database representation. | """Convert a swh-model revision to its database representation. | ||||
""" | """ | ||||
author = author_to_db(revision.author) | author = author_to_db(revision.author) | ||||
date = date_to_db(revision.date) | date = date_to_db(revision.date) | ||||
committer = author_to_db(revision.committer) | committer = author_to_db(revision.committer) | ||||
olasd: Optional[SWHID] | |||||
committer_date = date_to_db(revision.committer_date) | committer_date = date_to_db(revision.committer_date) | ||||
return { | return { | ||||
"id": revision.id, | "id": revision.id, | ||||
"author_fullname": author["fullname"], | "author_fullname": author["fullname"], | ||||
"author_name": author["name"], | "author_name": author["name"], | ||||
"author_email": author["email"], | "author_email": author["email"], | ||||
"date": date["timestamp"], | "date": date["timestamp"], | ||||
▲ Show 20 Lines • Show All 130 Lines • ▼ Show 20 Lines | return Release( | ||||
message=db_release["comment"], | message=db_release["comment"], | ||||
synthetic=db_release["synthetic"], | synthetic=db_release["synthetic"], | ||||
target=db_release["target"], | target=db_release["target"], | ||||
target_type=ObjectType(db_release["target_type"]), | target_type=ObjectType(db_release["target_type"]), | ||||
) | ) | ||||
def db_to_raw_extrinsic_metadata(row) -> RawExtrinsicMetadata: | def db_to_raw_extrinsic_metadata(row) -> RawExtrinsicMetadata: | ||||
type_ = MetadataTargetType(row["raw_extrinsic_metadata.type"]) | |||||
target = row["raw_extrinsic_metadata.target"] | |||||
if type_ != MetadataTargetType.ORIGIN: | |||||
target = parse_swhid(target) | |||||
return RawExtrinsicMetadata( | return RawExtrinsicMetadata( | ||||
type=type_, | target=row["raw_extrinsic_metadata.target"], | ||||
target=target, | |||||
authority=MetadataAuthority( | authority=MetadataAuthority( | ||||
type=MetadataAuthorityType(row["metadata_authority.type"]), | type=MetadataAuthorityType(row["metadata_authority.type"]), | ||||
url=row["metadata_authority.url"], | url=row["metadata_authority.url"], | ||||
), | ), | ||||
fetcher=MetadataFetcher( | fetcher=MetadataFetcher( | ||||
name=row["metadata_fetcher.name"], version=row["metadata_fetcher.version"], | name=row["metadata_fetcher.name"], version=row["metadata_fetcher.version"], | ||||
), | ), | ||||
discovery_date=row["discovery_date"], | discovery_date=row["discovery_date"], | ||||
format=row["format"], | format=row["format"], | ||||
metadata=row["raw_extrinsic_metadata.metadata"], | metadata=row["raw_extrinsic_metadata.metadata"], | ||||
origin=row["origin"], | origin=row["origin"], | ||||
visit=row["visit"], | visit=row["visit"], | ||||
snapshot=map_optional(parse_swhid, row["snapshot"]), | snapshot=row["snapshot"], | ||||
release=map_optional(parse_swhid, row["release"]), | release=row["release"], | ||||
revision=map_optional(parse_swhid, row["revision"]), | revision=row["revision"], | ||||
path=row["path"], | path=row["path"], | ||||
directory=map_optional(parse_swhid, row["directory"]), | directory=row["directory"], | ||||
) | ) |
Optional[SWHID]