#!/usr/bin/env bash

set -uo pipefail

retval=0

if [ -z "${CARDANO_NODE_SOCKET_PATH:-}" ]; then
  echo "CARDANO_NODE_SOCKET_PATH is not set" >&2
  retval=1
fi
if [ -z "${DBSYNC_SCHEMA_DIR:-}" ]; then
  echo "DBSYNC_SCHEMA_DIR is not set" >&2
  retval=1
fi
if [ "$retval" -ne 0 ]; then
  exit "$retval"
fi

SOCKET_PATH="$(readlink -m "$CARDANO_NODE_SOCKET_PATH")"
STATE_CLUSTER="${SOCKET_PATH%/*}"
STATE_CLUSTER_NAME="${STATE_CLUSTER##*/}"

export PGPASSFILE="$STATE_CLUSTER/pgpass"
export PGHOST="${PGHOST:-localhost}"
export PGPORT="${PGPORT:-5432}"
export PGUSER="${PGUSER:-postgres}"

exec cardano-db-sync --config "./$STATE_CLUSTER_NAME/dbsync-config.yaml" --socket-path "$CARDANO_NODE_SOCKET_PATH" --state-dir "./$STATE_CLUSTER_NAME/db-sync" --schema-dir "$DBSYNC_SCHEMA_DIR"
