"""Application configuration.""" import logging import os from dotenv import load_dotenv from sqlalchemy.pool import NullPool from sqlalchemy.pool import StaticPool # Load environment variables from a .env file dotenv_path = os.path.abspath( os.path.join(os.path.dirname(__file__), os.path.pardir, '.env')) load_dotenv(dotenv_path) # Service information SERVICE_NAME = 'ows-lyrics' SERVICE_VERSION = '0.0.1' # Production environment PROD_ENVIRONMENT = 'prod' DEV_ENVIRONMENT = 'dev' QA_ENVIRONMENT = 'qa' TEST_ENVIRONMENT = 'test' ENVIRONMENT = os.environ.get('Environment', DEV_ENVIRONMENT) # Errors and loggers SENTRY = os.environ.get('SENTRY_DSN') or None LOGGER_LEVEL = logging.INFO LOGGER_NAME = 'ows1' # Generic handlers HEALTH_CHECK = '/hello/' # Swagger documentation path SWAGGER_FILE_PATH = 'spec/ows_lyrics-1.0.0.yaml' # Database credentials DB_CREDENTIALS = { 'database': os.environ.get('AR_MYSQL_DATABASE'), 'host': os.environ.get('AR_MYSQL_HOST'), 'password': os.environ.get('AR_MYSQL_PASSWORD'), 'port': os.environ.get('AR_MYSQL_PORT'), 'user': os.environ.get('AR_MYSQL_USER') } # Database config if ENVIRONMENT == TEST_ENVIRONMENT: DB_URL = 'sqlite://' POOL_CLASS = StaticPool CONNECT_ARGS = {'check_same_thread': False} else: # pragma: no cover # We must explicitly set utf8 encoding for MySQL connections DB_URL = ( 'mysql+pymysql://{user}:{password}@{host}/{db}?charset={charset}' .format( user=DB_CREDENTIALS.get('user'), password=DB_CREDENTIALS.get('password'), host=DB_CREDENTIALS.get('host'), db=DB_CREDENTIALS.get('database'), charset='utf8mb4')) POOL_CLASS = NullPool CONNECT_ARGS = {}