{ writeShellApplication, postgresql, ... }:

{
  prymn_db = writeShellApplication {
    name = "prymn_db";

    runtimeInputs = [ postgresql ];

    text = ''
      #!/usr/bin/env bash

      set -e

      export PGDATA=$PROJECT_ROOT_DIR/.db
      export PGHOST=/tmp
      export DB_LOG=$PROJECT_ROOT_DIR/.db/log

      if [ ! -d "$PGDATA" ]; then
          initdb "$PGDATA" --auth=trust
      fi

      if ! pg_ctl status >/dev/null; then
          pg_ctl start -l "$DB_LOG" -o "-c unix_socket_directories=$PGHOST"
          echo "starting your dev database..."
      fi

      user_exists=$(psql --csv -t -d postgres -c "SELECT count(*) FROM pg_user WHERE usename='postgres'")
      if [ "$user_exists" != "1" ]; then
          createuser -s -h "$PGHOST" postgres
      fi
    '';
  };
}