# DB-backed pytest lane (R6 S3b): an ephemeral Postgres + the test image, wired together so the
# `db` fixture (tests/conftest.py) has a real database. The whole thing is throwaway — the pg data
# lives in tmpfs (RAM) and nothing is persisted. The pure-logic lane still runs WITHOUT this file
# (plain `docker run … python -m pytest` — DB tests skip when no Postgres is reachable).
#
#   docker compose -f backend/docker-compose.test.yml up --build --abort-on-container-exit \
#     --exit-code-from test
#   docker compose -f backend/docker-compose.test.yml down -v
services:
  testdb:
    image: postgres:16-alpine
    environment:
      POSTGRES_USER: siftlode
      POSTGRES_PASSWORD: siftlode
      POSTGRES_DB: siftlode_test
    tmpfs:
      - /var/lib/postgresql/data  # ephemeral + fast; the schema is rebuilt per run
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U siftlode -d siftlode_test"]
      interval: 1s
      timeout: 3s
      retries: 30
  test:
    build:
      context: .
      dockerfile: Dockerfile.test
    depends_on:
      testdb:
        condition: service_healthy
    environment:
      DATABASE_URL: postgresql+psycopg://siftlode:siftlode@testdb:5432/siftlode_test
    volumes:
      - ./:/app
    working_dir: /app
    command: python -m pytest
