set quiet := true

pgdata := justfile_directory() / ".pgdata"
export PGHOST := justfile_directory() / ".pgdata"

help:
    just --justfile {{ justfile() }} --list

build:
    cabal build all

clean:
    cabal clean

format:
    fourmolu -qi src/ test/
    stylish-haskell -ir src/ test/

lint:
    hlint src/ test/

pg-start:
    if pg_isready -q; then echo "PostgreSQL is already running"; exit 0; fi
    if [ ! -d "{{ pgdata }}" ]; then \
        initdb -D "{{ pgdata }}" --no-locale --encoding=UTF8; \
    fi
    pg_ctl -D "{{ pgdata }}" -l "{{ pgdata }}/server.log" \
        -o "-k {{ pgdata }} -h ''" start
    echo "Waiting for PostgreSQL..."
    until pg_isready -q; do sleep 0.2; done
    createdb --host="{{ pgdata }}" 2>/dev/null || true
    echo "PostgreSQL is running (data: {{ pgdata }})"

pg-stop:
    if ! pg_isready -q; then echo "PostgreSQL is not running"; exit 0; fi
    pg_ctl -D "{{ pgdata }}" stop
    echo "PostgreSQL stopped"

test:
    #! /usr/bin/env bash
    pg_isready || { echo "PostgreSQL is not running — run 'just pg-start' first"; exit 1; }
    psql -f test/setup.sql
    cabal test hasql-generate-test
    psql -f test/teardown.sql
