from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from config import DATABASE_URL
from database.models import Base
import os

# Создание движка SQLAlchemy
engine = create_engine(DATABASE_URL, echo=True)

# Создание фабрики сессий
Session = sessionmaker(bind=engine, autoflush=True)

# Переменная для хранения текущей сессии
current_session = None

def create_session():
    """Создание сессии для работы с базой данных."""
    return Session()

def init_db(refresh=False):
    """
    Инициализация базы данных: создание файла и таблиц.
    Если `refresh` равно True, удаляет и пересоздаёт таблицы.
    """
    global current_session
    if not os.path.exists("database/DogAcademy.db") or refresh:
        if refresh:
            print("Обновление базы данных: удаление старых таблиц...")
            Base.metadata.drop_all(bind=engine)  # Удалить все таблицы

        print("Создание базы данных и таблиц...")
        Base.metadata.create_all(bind=engine)  # Создать таблицы заново
    else:
        print("База данных уже существует. Обновление не требуется.")

    # Инициализация сессии при запуске
    current_session = get_session()

def get_session():
    """Возвращает сессию для работы с базой данных."""
    return Session()

def close_sessions():
    """Закрытие всех сессий перед выходом из программы."""
    if current_session:
        print("Закрытие сессии...")
        current_session.close()
    else:
        print("Нет активной сессии для закрытия.")