Source code for bookkeeping.config

"""
config.py
=============
Handling of configuration setting for the bookkeeper service
"""

# Standard python includes
import os
from typing import Optional

import daiquiri
# Starlette-related includes
from starlette.config import Config

# Create local logger instance
logger = daiquiri.getLogger("config")
bookkeeper_config: Config
config_filename: str = (os.getenv("MERCURE_CONFIG_FOLDER") or "/opt/mercure/config") + "/bookkeeper.env"
DATABASE_URL: str
BOOKKEEPER_PORT: int
BOOKKEEPER_HOST: str
DATABASE_SCHEMA: Optional[str]
API_KEY: Optional[str]
DEBUG_MODE: bool


[docs]def read_bookkeeper_config() -> Config: global bookkeeper_config, BOOKKEEPER_PORT, BOOKKEEPER_HOST, DATABASE_URL, DATABASE_SCHEMA, DEBUG_MODE, API_KEY bookkeeper_config = Config(config_filename) BOOKKEEPER_PORT = bookkeeper_config("PORT", cast=int, default=8080) BOOKKEEPER_HOST = bookkeeper_config("HOST", default="0.0.0.0") DATABASE_URL = bookkeeper_config("DATABASE_URL", default="postgresql://mercure@localhost") DATABASE_SCHEMA = bookkeeper_config("DATABASE_SCHEMA", default=None) DEBUG_MODE = bookkeeper_config("DEBUG", cast=bool, default=False) API_KEY = None return bookkeeper_config
[docs]def set_api_key() -> None: global API_KEY if API_KEY is None: from common.config import read_config try: c = read_config() API_KEY = c.bookkeeper_api_key if not API_KEY or API_KEY == "BOOKKEEPER_TOKEN_PLACEHOLDER": raise Exception("No API key set in mercure.json or value" " unchanged from placeholder. Bookkeeper cannot function.") except (ResourceWarning, FileNotFoundError) as e: raise e