databases¶
DatabasesMapper
¶
map_back(doc)
classmethod
¶
Map properties from MongoDB to OPTIMADE
:param doc: A resource object in MongoDB format :type doc: dict
:return: A resource object in OPTIMADE format :rtype: dict
Source code in optimade_gateway/mappers/databases.py
@classmethod
def map_back(cls, doc: dict) -> dict:
from optimade.server.routers.utils import BASE_URL_PREFIXES
if "_id" in doc:
_id = str(doc.pop("_id"))
if "id" not in doc:
doc["id"] = _id
doc["links"] = {
"self": AnyUrl(
url=f"{CONFIG.base_url.strip('/')}{BASE_URL_PREFIXES['major']}/{cls.ENDPOINT}/{doc['id']}",
scheme=CONFIG.base_url.split("://")[0],
host=CONFIG.base_url.split("://")[1].split("/")[0],
)
}
# Ensure the type does not change to "databases"
# The `LinksMapper.map_back()` method ensures the value for doc["type"] is kept.
doc["type"] = "links"
return super().map_back(doc)