Source code for openapi.db

import os
from typing import Optional

from aiohttp.web import Application

from .container import Database
from .dbmodel import CrudDB

__all__ = ["compile_query", "Database", "CrudDB", "get_db"]


[docs]def get_db(app: Application, store_url: Optional[str] = None) -> Optional[CrudDB]: """Create an Open API db handler and set it for use in an aiohttp application :param app: aiohttp Application :param store_url: datastore connection string, if not provided the env variable `DATASTORE` is used instead. If the env variable is not available either the method logs a warning and return `None` This function 1) adds the database to the aiohttp application at key "db", 2) add the db command to the command line client (if command is True) and 3) add the close handler on application shutdown """ store_url = store_url or os.environ.get("DATASTORE") if not store_url: # pragma: no cover app.logger.warning("DATASTORE url not available") return None else: app["db"] = CrudDB(store_url) app.on_shutdown.append(close_db) return app["db"]
async def close_db(app: Application) -> None: await app["db"].close()