7: engine the app uses) with a dedicated test database created per session 27:TEST_DATABASE_URL = os.environ.get( 28: "TEST_DATABASE_URL", 33:def _probe_postgres() -> bool: 36: from sqlalchemy import create_engine, text 38: eng = create_engine(POSTGRES_ADMIN_URL, pool_pre_ping=True) 54:def test_app(): 59: from sqlalchemy import create_engine, text 62: admin = create_engine(POSTGRES_ADMIN_URL, pool_pre_ping=True, isolation_level="AUTOCOMMIT") 72: config_mod.settings.DATABASE_URL = TEST_DATABASE_URL 84: eng = create_engine(TEST_DATABASE_URL, pool_pre_ping=True) 93: admin = create_engine(POSTGRES_ADMIN_URL, pool_pre_ping=True, isolation_level="AUTOCOMMIT") 110:def api(test_app): 113: from sqlalchemy import create_engine, text 116: eng = create_engine(TEST_DATABASE_URL) 138:def db_engine(test_app): 139: from sqlalchemy import create_engine 141: eng = create_engine(TEST_DATABASE_URL, pool_pre_ping=True) 147:def db(db_engine): 151: with Session(db_engine, expire_on_commit=False) as s: 155:def csrf_of(client) -> str: ===DLQ=== """Dead-letter queue (Redis list dlq:send): jobs that exhausted retries.""" import redis as redis_lib from app.core.config import settings r = redis_lib.Redis.from_url(settings.REDIS_URL, decode_responses=True) try: items = r.lrange("dlq:send", 0, -1) except Exception as e: # Redis down — don't 500 the whole logs page return {"dlq": [], "total": 0, "error": f"Redis unavailable: {e}"} import json as _json out = [] for raw in items: try: out.append(_json.loads(raw)) except Exception: out.append({"raw": raw[:200]}) total = len(out) start = (page - 1) * page_size return {"dlq": out[start:start + page_size], "total": total, "page": page, "page_size": page_size} @router.get("/export") async def export_logs(campaign_id: int = Query(0), outcome: str = Query(""), db: AsyncSession = Depends(get_db), user: User = Depends(get_current_user)):