diff --git a/main.py b/main.py index 11652284..f546d911 100644 --- a/main.py +++ b/main.py @@ -210,6 +210,24 @@ async def lifespan(app: Starlette): """ try: print("[lifespan] Starting application initialization") + + # Запускаем миграции Alembic перед созданием таблиц + print("[lifespan] Running database migrations...") + try: + import subprocess + result = subprocess.run( + ["alembic", "upgrade", "head"], + capture_output=True, + text=True, + cwd="/app" + ) + if result.returncode == 0: + print("[lifespan] Database migrations completed successfully") + else: + print(f"[lifespan] Warning: migrations failed: {result.stderr}") + except Exception as e: + print(f"[lifespan] Warning: could not run migrations: {e}") + create_all_tables() # Инициализируем RBAC систему с dependency injection diff --git a/orm/draft.py b/orm/draft.py index 93d6dcc9..ff6022a7 100644 --- a/orm/draft.py +++ b/orm/draft.py @@ -74,8 +74,7 @@ class Draft(Base): authors = relationship(get_author_model(), secondary=DraftAuthor.__table__) topics = relationship(Topic, secondary=DraftTopic.__table__) - # shout/publication - # Временно закомментировано для совместимости с тестами + # shout/publication - связь с опубликованной публикацией shout: Mapped[int | None] = mapped_column(ForeignKey("shout.id"), nullable=True) __table_args__ = (