FROM python:3.12-slim

# Install PostgreSQL 18 client tools (backward compatible with PG 17/15 etc.)
RUN apt-get update && \
    apt-get install -y --no-install-recommends gnupg lsb-release curl && \
    curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor -o /usr/share/keyrings/pgdg.gpg && \
    echo "deb [signed-by=/usr/share/keyrings/pgdg.gpg] http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list && \
    apt-get update && \
    apt-get install -y --no-install-recommends postgresql-client-18 && \
    apt-get purge -y gnupg lsb-release curl && \
    apt-get autoremove -y && \
    rm -rf /var/lib/apt/lists/*

WORKDIR /app

COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

COPY src/ ./src/
COPY frontend/ ./frontend/
COPY config/default.yaml.example ./config/default.yaml.example

ENV PYTHONPATH=/app/src
ENV MIGRATOR_SERVER__HOST=0.0.0.0
ENV MIGRATOR_SERVER__PORT=8080
ENV MIGRATOR_MIGRATION__DATABASE__PG_BIN_PATH=/usr/lib/postgresql/18/bin

EXPOSE 8080

CMD ["python", "-m", "uvicorn", "supabase_migrator.main:app", "--host", "0.0.0.0", "--port", "8080"]
