File size: 1,165 Bytes
440bac0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
50ccdee
 
 
 
440bac0
 
 
50ccdee
 
440bac0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
from sqlalchemy.pool import StaticPool
import os
from dotenv import load_dotenv

# Cargar variables de entorno
load_dotenv()

# Configuración de base de datos: PostgreSQL en producción, SQLite fallback en desarrollo
DATABASE_URL = os.getenv("DATABASE_URL")

if DATABASE_URL:
    # PostgreSQL para producción
    IS_WORKER = os.getenv("IS_WORKER", "false").lower() == "true"
    p_size = 2 if IS_WORKER else 8
    p_overflow = 4 if IS_WORKER else 12
    
    engine = create_engine(
        DATABASE_URL,
        pool_pre_ping=True,
        pool_size=p_size,
        max_overflow=p_overflow
    )
else:
    # SQLite para desarrollo/testing local
    SQLITE_URL = "sqlite:///./musical_master.db"
    engine = create_engine(
        SQLITE_URL,
        connect_args={"check_same_thread": False},
        poolclass=StaticPool
    )

SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)

Base = declarative_base()

def get_db():
    db = SessionLocal()
    try:
        yield db
    finally:
        db.close()