Spaces:
Runtime error
Runtime error
from ssl import CERT_REQUIRED | |
from sqlalchemy import text | |
from sqlalchemy.ext.asyncio import AsyncEngine, create_async_engine | |
from reworkd_platform.services.ssl import get_ssl_context | |
from reworkd_platform.settings import settings | |
def create_engine() -> AsyncEngine: | |
""" | |
Creates SQLAlchemy engine instance. | |
:return: SQLAlchemy engine instance. | |
""" | |
if settings.environment == "development": | |
return create_async_engine( | |
str(settings.db_url), | |
echo=settings.db_echo, | |
) | |
ssl_context = get_ssl_context(settings) | |
ssl_context.verify_mode = CERT_REQUIRED | |
connect_args = {"ssl": ssl_context} | |
return create_async_engine( | |
str(settings.db_url), | |
echo=settings.db_echo, | |
connect_args=connect_args, | |
) | |
async def create_database() -> None: | |
"""Create a database.""" | |
engine = create_async_engine(str(settings.db_url.with_path("/mysql"))) | |
async with engine.connect() as conn: | |
database_existance = await conn.execute( | |
text( | |
"SELECT 1 FROM INFORMATION_SCHEMA.SCHEMATA" # noqa: S608 | |
f" WHERE SCHEMA_NAME='{settings.db_base}';", | |
) | |
) | |
database_exists = database_existance.scalar() == 1 | |
if database_exists: | |
await drop_database() | |
async with engine.connect() as conn: # noqa: WPS440 | |
await conn.execute(text(f"CREATE DATABASE {settings.db_base};")) | |
async def drop_database() -> None: | |
"""Drop current database.""" | |
engine = create_async_engine(str(settings.db_url.with_path("/mysql"))) | |
async with engine.connect() as conn: | |
await conn.execute(text(f"DROP DATABASE {settings.db_base};")) | |