archive-backend/alembic/env.py
2026-11-07 19:35:15 +00:00

87 lines
2.5 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import os
import sys
from logging.config import fileConfig
from sqlalchemy import engine_from_config, pool
from alembic import context
# Добавляем корень проекта в sys.path, чтобы импортировать твои модули
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
# Импортируем твой Base и настройки
from core.config import settings # Если у тебя настройки в Pydantic
from core.db import Base
# Импортируй ВСЕ модели, чтобы Alembic их увидел
from models import audio_model, photo_model, video_model
# (или как у тебя называется файл, где лежат все модели)
# this is the Alembic Config object
config = context.config
# Устанавливаем URL базы данных из твоих настроек
config.set_main_option("sqlalchemy.url", settings.database_url)
# ... дальше идет стандартный код ...
target_metadata = Base.metadata
# other values from the config, defined by the needs of env.py,
# can be acquired:
# my_important_option = config.get_main_option("my_important_option")
# ... etc.
def run_migrations_offline() -> None:
"""Run migrations in 'offline' mode.
This configures the context with just a URL
and not an Engine, though an Engine is acceptable
here as well. By skipping the Engine creation
we don't even need a DBAPI to be available.
Calls to context.execute() here emit the given string to the
script output.
"""
url = config.get_main_option("sqlalchemy.url")
context.configure(
url=url,
target_metadata=target_metadata,
literal_binds=True,
dialect_opts={"paramstyle": "named"},
)
with context.begin_transaction():
context.run_migrations()
def run_migrations_online() -> None:
"""Run migrations in 'online' mode.
In this scenario we need to create an Engine
and associate a connection with the context.
"""
connectable = engine_from_config(
config.get_section(config.config_ini_section, {}),
prefix="sqlalchemy.",
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()