import os import sys from logging.config import fileConfig from sqlalchemy import pool, create_engine from alembic import context # Přidání backend do sys.path pro správný import sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))) from app.core.db import Base config = context.config if config.config_file_name is not None: fileConfig(config.config_file_name) target_metadata = Base.metadata DATABASE_URL = os.getenv("DATABASE_URL") if not DATABASE_URL: # fallback na synchronní url pro Alembic (používá sync driver) mariadb_host = os.getenv("MARIADB_HOST", "localhost") mariadb_port = os.getenv("MARIADB_PORT", "3306") mariadb_db = os.getenv("MARIADB_DB", "group_project") mariadb_user = os.getenv("MARIADB_USER", "root") mariadb_password = os.getenv("MARIADB_PASSWORD", "strongpassword") DATABASE_URL = f"mysql+pymysql://{mariadb_user}:{mariadb_password}@{mariadb_host}:{mariadb_port}/{mariadb_db}" # Vždy používej synchronní engine pro migrace SYNC_DATABASE_URL = DATABASE_URL.replace("+asyncmy", "+pymysql") def run_migrations_offline() -> None: context.configure( url=SYNC_DATABASE_URL, target_metadata=target_metadata, literal_binds=True, dialect_opts={"paramstyle": "named"}, ) with context.begin_transaction(): context.run_migrations() def run_migrations_online() -> None: connectable = create_engine(SYNC_DATABASE_URL, poolclass=pool.NullPool) with connectable.connect() as connection: context.configure( connection=connection, target_metadata=target_metadata, ) with context.begin_transaction(): context.run_migrations() if context.is_offline_mode(): run_migrations_offline() else: run_migrations_online()