#!/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 (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ĩ 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"