Сервис для хранения файлов аудио, индексации файлов, записи и выдачи результатов распознавания
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

47 lines
1.3 KiB

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 {}
)
# SessionLocal
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
# Base (используем тот же Base, что и в apiApp.database)
from apiApp.database import Base
# Зависимость для получения сессии БД (для FastAPI)
def get_db():
db = SessionLocal()
try:
yield db
finally:
db.close()
# Контекстный менеджер для использования в loader
@contextmanager
def get_db_session():
"""Контекстный менеджер для работы с БД в loader"""
db = SessionLocal()
try:
yield db
db.commit()
except Exception as e:
db.rollback()
raise e
finally:
db.close()
# Импортируем модели из apiApp.database
from apiApp.database.Audio import Audio
from apiApp.database.AiConclusion import AiConclusion
from apiApp.database.ConclusionVersion import ConclusionVersion