#!/usr/bin/env bash
# Reproduce the measurement: throwaway container, setup, cases, cleanup.
set -euo pipefail
cd "$(dirname "$0")"
NAME=${NAME:-supabase-rls-bench}
mkdir -p raw
docker run -d --name "$NAME" -e POSTGRES_USER=supabase_admin -e POSTGRES_DB=postgres \
  -e POSTGRES_PASSWORD=x postgres:17 >/dev/null
until docker exec "$NAME" pg_isready -U supabase_admin -d postgres -q; do sleep 1; done
sleep 2   # the entrypoint restarts the server once after init
until docker exec "$NAME" pg_isready -U supabase_admin -d postgres -q; do sleep 1; done
# Merge stderr into stdout inside the container: merged on the host, an error can
# land under the next statement, because docker relays the two streams separately.
docker exec -i "$NAME" sh -c 'psql -X -e -U supabase_admin -d postgres 2>&1' < setup.sql > raw/setup.out
docker exec -i "$NAME" sh -c 'psql -X -e -U supabase_admin -d postgres 2>&1' < run.sql > raw/run.out
[ "${KEEP:-0}" = 1 ] || docker rm -f "$NAME" >/dev/null
echo "done: raw/setup.out raw/run.out"
