Coverage for backend \ app \ database.py: 53.85%
26 statements
« prev ^ index » next coverage.py v7.13.0, created at 2025-12-29 16:13 -0500
« prev ^ index » next coverage.py v7.13.0, created at 2025-12-29 16:13 -0500
1import os
2from sqlalchemy import create_engine
3from sqlalchemy.ext.declarative import declarative_base
4from sqlalchemy.orm import sessionmaker
7BASEDATOS_URL = os.getenv(
8 "DATABASE_URL","postgresql://dalctuser:Dalct1234@servicio-bdpostgres:5432/dalctmarket"
9)
11engine = create_engine(BASEDATOS_URL)
13# Establecer la zona horaria por conexión (por defecto Quito) para que funciones de servidor
14# como now() devuelvan la hora en la zona deseada. Se puede sobreescribir con la variable
15# de entorno DB_TIMEZONE.
16from sqlalchemy import event
17DB_TIMEZONE = os.getenv("DB_TIMEZONE", "America/Guayaquil")
19@event.listens_for(engine, "connect")
20def _set_timezone(dbapi_connection, connection_record):
21 try:
22 cursor = dbapi_connection.cursor()
23 cursor.execute(f"SET TIME ZONE '{DB_TIMEZONE}'")
24 cursor.close()
25 except Exception:
26 # No bloquear si la conexión no soporta cursor (por ejemplo, motores no-Postgres)
27 pass
29SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
30Base = declarative_base()
32# Obtener la sesión actual de la base de datos
33def obtenerSesion():
34 databaseSesion = SessionLocal()
35 try:
36 yield databaseSesion
37 finally:
38 databaseSesion.close()
40def obtenerSesionDirecta():
41 db = SessionLocal()
42 return db