diff --git a/apiApp/database/AiConclusion.py b/apiApp/database/AiConclusion.py index dbb5e5d..212b33c 100644 --- a/apiApp/database/AiConclusion.py +++ b/apiApp/database/AiConclusion.py @@ -18,5 +18,5 @@ class AiConclusion(Base): index_date = Column(DateTime, default=datetime.utcnow) end_date = Column(DateTime) - audio_id = Column(UUID(as_uuid=True), ForeignKey("audio.id")) - version = relationship("ConclusionVersion", back_populates="ai_conclusion") \ No newline at end of file + audio = relationship("Audio", back_populates="ai_conclusion") + versions = relationship("ConclusionVersion", back_populates="ai_conclusion") \ No newline at end of file diff --git a/apiApp/database/ConclusionVersion.py b/apiApp/database/ConclusionVersion.py index 59dfe79..05ec07d 100644 --- a/apiApp/database/ConclusionVersion.py +++ b/apiApp/database/ConclusionVersion.py @@ -1,4 +1,5 @@ from sqlalchemy import Column, UUID, ForeignKey, Integer, Text +from sqlalchemy.orm import relationship from apiApp.database import Base import uuid @@ -9,4 +10,6 @@ class ConclusionVersion(Base): id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) conclusion_id = Column(UUID(as_uuid=True), ForeignKey("ai_conclusion.id")) version = Column(Integer) - content = Column(Text) \ No newline at end of file + content = Column(Text) + + ai_conclusion = relationship("AiConclusion", back_populates="versions") diff --git a/apiApp/database/Operator.py b/apiApp/database/Operator.py index 2edf9f9..9e45a0f 100644 --- a/apiApp/database/Operator.py +++ b/apiApp/database/Operator.py @@ -11,6 +11,6 @@ class Operator(Base): fio = Column(String(100)) num = Column(Integer) - calls = relationship("Call", back_populates="operator") - + # TODO: Добавить relationship когда будет создана модель Call + # calls = relationship("Call", back_populates="operator") diff --git a/apiApp/database/__init__.py b/apiApp/database/__init__.py index 2680dd8..ca2a814 100644 --- a/apiApp/database/__init__.py +++ b/apiApp/database/__init__.py @@ -28,4 +28,7 @@ def get_db(): from apiApp.database.Operator import Operator from apiApp.database.Audio import Audio from apiApp.database.AiConclusion import AiConclusion -from apiApp.database.ConclusionVersion import ConclusionVersion \ No newline at end of file +from apiApp.database.ConclusionVersion import ConclusionVersion + +# Все модели должны быть импортированы здесь для правильной работы SQLAlchemy metadata +# Это гарантирует, что все relationship будут работать корректно diff --git a/autoLoader/database/__init__.py b/autoLoader/database/__init__.py index 218f9be..16e02a5 100644 --- a/autoLoader/database/__init__.py +++ b/autoLoader/database/__init__.py @@ -1,21 +1,14 @@ from sqlalchemy import create_engine -from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker, Session from autoLoader.config import DATABASE_URL from contextlib import contextmanager -# Создание engine -engine = create_engine( - DATABASE_URL, - connect_args={"check_same_thread": False} if "sqlite" in DATABASE_URL else {} -) +# Создаём engine, но используем Base из apiApp.database +from apiApp.database import Base, engine -# SessionLocal +# SessionLocal (используем тот же engine) SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine) -# Base (используем тот же Base, что и в apiApp.database) -from apiApp.database import Base - # Зависимость для получения сессии БД (для FastAPI) def get_db(): @@ -41,7 +34,7 @@ def get_db_session(): db.close() -# Импортируем модели из apiApp.database -from apiApp.database.Audio import Audio -from apiApp.database.AiConclusion import AiConclusion -from apiApp.database.ConclusionVersion import ConclusionVersion +# Импортируем ТОЛЬКО нужные модели из apiApp.database +# Operator не импортируем, чтобы избежать проблем с Call +from autoLoader.database.Audio import Audio +