Skip to content

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)
Back to top