#!/bin/bash
set -euo pipefail

name=wm-mj

_psql() {
    env \
        PGPASSWORD=osm \
        PGHOST=127.0.0.1 \
        PGUSER=osm \
        PGDATABASE=osm \
        psql "$@"
}

_wait_for_postgres() {
    >&2 echo -n "Waiting for postgres"
    for _ in $(seq 240); do
      if _psql -qc '\q' 2>/dev/null; then
          >&2 echo " up"
          exit 0
      fi
      >&2 echo -n .
      sleep 1
    done
    >&2 echo " down"
    exit 1
}

case ${1:-} in
    start)
        _psql -qc '\q' 2>/dev/null && exit 0
        docker run -d --rm \
            -p 127.0.0.1:5432:5432 \
            -e POSTGRES_DBNAME=osm \
            -e POSTGRES_USER=osm \
            -e POSTGRES_PASSWORD=osm \
            --name "$name" \
            postgis/postgis:13-3.1-alpine \
                -c log_statement=all
        _wait_for_postgres
        ;;
    stop)
        docker stop "$name"
        ;;
    *)
        _psql "$@"
        ;;
esac