# Stage 1 — compile sqlite-zstd against the container's own SQLite
FROM ghcr.io/astral-sh/uv:python3.13-trixie-slim AS sqlite-zstd-builder

RUN apt-get update && apt-get install -y --no-install-recommends \
    curl git libsqlite3-dev libzstd-dev pkg-config build-essential ca-certificates && \
    rm -rf /var/lib/apt/lists/*

RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain stable --profile minimal
ENV PATH="/root/.cargo/bin:${PATH}"

RUN git clone --depth=1 --branch v0.3.5 https://github.com/phiresky/sqlite-zstd.git /tmp/sqlite-zstd && \
    cd /tmp/sqlite-zstd && \
    cargo build --release --features build_extension && \
    cp target/release/libsqlite_zstd.so /usr/local/lib/libsqlite_zstd.so

# Stage 2 — runtime image
FROM ghcr.io/astral-sh/uv:python3.13-trixie-slim

RUN apt-get update && apt-get install -y --no-install-recommends libzstd1 && \
    rm -rf /var/lib/apt/lists/*

COPY --from=sqlite-zstd-builder /usr/local/lib/libsqlite_zstd.so /usr/local/lib/libsqlite_zstd.so

# Install app
COPY . /app
WORKDIR /app

# Install dependencies
RUN uv sync --no-config --frozen --compile-bytecode

EXPOSE 8000

CMD [".venv/bin/hypercorn", "asgi:app", "--bind", "0.0.0.0:8000", "--workers", "1", "--access-logfile", "-"]
