import click from audience_common.enums import Environment from pyxdi import PyxDI from campaigns.cli.decorators import pass_di from campaigns.config import AppSettings from campaigns.connectors.db import Database from campaigns.connectors.db.orm import Base cli = click.Group(short_help="Perform Database commands.", no_args_is_help=True) @cli.command("create") @pass_di async def create_db(di: PyxDI) -> None: """Create database.""" settings = di.get_instance(AppSettings) db = di.get_instance(Database) if settings.environment in [Environment.QA, Environment.PROD]: raise click.ClickException("Cannot create database in QA or PROD environment.") async with db.engine.begin() as conn: await conn.run_sync(Base.metadata.create_all)