from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
from pathlib import Path
import os

# Configurar caminho do banco de dados
db_dir = Path.home() / '.local' / 'share' / 'controles'
db_dir.mkdir(parents=True, exist_ok=True)
db_path = db_dir / 'database.db'

# Configurar SQLite com opções para melhor concorrência
engine = create_engine(
    f'sqlite:///{db_path}',
    connect_args={
        'timeout': 30,  # Tempo de espera em segundos
        'check_same_thread': False  # Permite acesso de múltiplas threads
    },
    pool_pre_ping=True,  # Verifica conexão antes de usar
    pool_recycle=3600  # Recicla conexões após 1 hora
)

Session = sessionmaker(bind=engine)
Base = declarative_base()

def get_db_connection():
    """Retorna uma nova sessão do banco de dados"""
    session = Session()
    try:
        return session
    except Exception as e:
        session.rollback()
        raise e 