- inits centralizados, READMEs atualizados
- padronizando o nome de get_db_connection e session para get_db_session, para não confundir com session do Flask ou sessoes web
- corrigindo potenciais erros
-- has_permission nao consegue com lazy load carregar permission depois de load_user fechar a conexao, entao joinedLoad com Permission antes de fechar
-- db.rollback não existe caso db = get_db_session() apareça muito depois dentro do try, padronizando antes de try
--- comparar role por nivel (Role.SECRETARIO_GERAL) e nao por nome ("Secretario Geral")
- unificacao de get_otp_qr_code
- mudança de nowutc() para now(UTC) conforme novo padrão
This commit is contained in:
@@ -1,16 +1,17 @@
|
||||
import os
|
||||
from sqlalchemy import create_engine, text
|
||||
from sqlalchemy.ext.declarative import declarative_base
|
||||
from sqlalchemy.orm import sessionmaker
|
||||
from pathlib import Path
|
||||
|
||||
# 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'
|
||||
db_path = Path(__file__).resolve().parents[1] / 'data' / 'database.db'
|
||||
db_path.parent.mkdir(parents=True, exist_ok=True)
|
||||
db_fallback = f'sqlite:///{db_path}'
|
||||
|
||||
# Configurar SQLite com opções para melhor concorrência
|
||||
engine = create_engine(
|
||||
f'sqlite:///{db_path}',
|
||||
os.environ.get('DATABASE_URL', db_fallback),
|
||||
connect_args={
|
||||
'timeout': 30, # Tempo de espera em segundos
|
||||
'check_same_thread': False # Permite acesso de múltiplas threads
|
||||
@@ -22,15 +23,15 @@ engine = create_engine(
|
||||
Session = sessionmaker(bind=engine)
|
||||
Base = declarative_base()
|
||||
|
||||
def get_db_connection():
|
||||
def get_db_session():
|
||||
"""Retorna uma nova sessão do banco de dados com PRAGMAs configuradas"""
|
||||
session = Session()
|
||||
db_session = Session()
|
||||
try:
|
||||
# Configurar SQLite para melhor tratamento de concorrência
|
||||
session.execute(text("PRAGMA journal_mode=WAL"))
|
||||
session.execute(text("PRAGMA busy_timeout=5000"))
|
||||
return session
|
||||
db_session.execute(text("PRAGMA journal_mode=WAL"))
|
||||
db_session.execute(text("PRAGMA busy_timeout=5000"))
|
||||
return db_session
|
||||
except Exception as e:
|
||||
session.rollback()
|
||||
session.close()
|
||||
db_session.rollback()
|
||||
db_session.close()
|
||||
raise e
|
||||
|
||||
Reference in New Issue
Block a user