#!/usr/bin/env bash
# ─────────────────────────────────────────────────────────────────────────────
# db-create.sh – Create this lane's Postgres database inside a docker-compose
# service, via `createdb`. Ported verbatim from Shipyard's own lane-bootstrap
# / lane-up / lane-reset scripts, so a Postgres-via-compose repo gets parity
# by copying this template into its own .ccam/profile/hooks/.
#
# Called as: db-create.sh <db-name>  (also available as $DB_NAME)
# Requires, declared in the repo's own profile.env:
#   COMPOSE_FILE   path to the docker-compose file (e.g. "$LANE_DIR/docker-compose.yml")
#   DB_SERVICE     the compose service name running Postgres
# Provided by CCAM's hook environment (server/lib/secrets.js):
#   PG_USER        (PG_PASS is deliberately not exported — trust auth inside the
#                    compose network needs no password for this call)
# ─────────────────────────────────────────────────────────────────────────────
# @author Nguyễn Ngọc Trí Vĩ <vinnt@smartgift.vn>
set -euo pipefail

NAME="${1:-$DB_NAME}"
[ -n "$NAME" ] || { echo "db-create: no database name given" >&2; exit 1; }

if docker compose -f "$COMPOSE_FILE" exec -T "$DB_SERVICE" \
     psql -U "$PG_USER" -tAc "SELECT 1 FROM pg_database WHERE datname='$NAME'" | grep -q 1; then
  echo "db-create: $NAME already exists"
  exit 0
fi

docker compose -f "$COMPOSE_FILE" exec -T "$DB_SERVICE" createdb -U "$PG_USER" "$NAME"
echo "db-create: created $NAME"
