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};")) | |