feat: feedback-driven recipe discovery (auto-ingest via Spoonacular)
CI / backend (pytest + alembic) (push) Has been cancelled
CI / frontend (build) (push) Has been cancelled

This commit is contained in:
2026-05-24 13:17:39 -07:00
parent 35f736a052
commit 3885d7d0dc
20 changed files with 1962 additions and 9 deletions
+5 -3
View File
@@ -46,15 +46,16 @@ def _resolve_test_dsn() -> str | None:
dsn = os.environ.get("TEST_DATABASE_URL") or os.environ.get("DATABASE_URL")
if not dsn:
return None
if not dsn.startswith(("postgresql://", "postgresql+psycopg2://")):
if not dsn.startswith(("postgresql://", "postgresql+psycopg2://", "postgresql+pg8000://")):
return None
return dsn
def _postgres_reachable(dsn: str) -> bool:
try:
driver = "postgresql+pg8000://" if "pg8000" in dsn else "postgresql+psycopg2://"
eng = create_engine(
dsn.replace("postgresql://", "postgresql+psycopg2://"),
dsn.replace("postgresql://", driver).replace("postgresql+psycopg2://", driver),
pool_pre_ping=True,
)
with eng.connect() as conn:
@@ -130,8 +131,9 @@ def _engine(_schema):
if not _PG_AVAILABLE:
yield None
return
driver = "postgresql+pg8000://" if "pg8000" in _DSN else "postgresql+psycopg2://"
eng = create_engine(
_DSN.replace("postgresql://", "postgresql+psycopg2://"),
_DSN.replace("postgresql://", driver).replace("postgresql+psycopg2://", driver),
pool_pre_ping=True,
)
yield eng