Files
arc53--docsgpt/scripts/e2e/reset_db.sh
T
wehub-resource-sync fed8b2eed7
Backend release / release (push) Waiting to run
Bandit Security Scan / bandit_scan (push) Waiting to run
Build and push multi-arch DocsGPT Docker image / build (linux/amd64, ubuntu-latest, amd64) (push) Waiting to run
Build and push multi-arch DocsGPT Docker image / build (linux/arm64, ubuntu-24.04-arm, arm64) (push) Waiting to run
Build and push multi-arch DocsGPT Docker image / manifest (push) Blocked by required conditions
Build and push DocsGPT FE Docker image for development / build (linux/amd64, ubuntu-latest, amd64) (push) Waiting to run
Build and push DocsGPT FE Docker image for development / build (linux/arm64, ubuntu-24.04-arm, arm64) (push) Waiting to run
Build and push DocsGPT FE Docker image for development / manifest (push) Blocked by required conditions
Python linting / ruff (push) Waiting to run
Run python tests with pytest / Run tests and count coverage (3.12) (push) Waiting to run
React Widget Build / build (push) Waiting to run
chore: import upstream snapshot with attribution
2026-07-13 13:28:29 +08:00

59 lines
1.5 KiB
Bash
Executable File

#!/usr/bin/env bash
# Reset the DocsGPT e2e DB by cloning it from the baked template.
#
# Called by scripts/e2e/up.sh at the start of each e2e run.
# Fast path: a single psql session does terminate + drop + clone.
set -euo pipefail
PG_BIN="/Users/Shared/DBngin/postgresql/16.2/bin"
PSQL="${PG_BIN}/psql"
PG_ISREADY="${PG_BIN}/pg_isready"
PG_HOST="127.0.0.1"
PG_PORT="5432"
PG_SUPERUSER="postgres"
TEMPLATE_DB="docsgpt_e2e_template"
E2E_DB="docsgpt_e2e"
OWNER_ROLE="docsgpt"
log() {
printf '[reset_db] %s\n' "$*" >&2
}
if [[ ! -x "${PSQL}" ]]; then
log "psql not found at ${PSQL} — is DBngin Postgres 16.2 installed?"
exit 1
fi
if ! "${PG_ISREADY}" -h "${PG_HOST}" -p "${PG_PORT}" -q; then
log "Postgres is not accepting connections at ${PG_HOST}:${PG_PORT}."
exit 1
fi
# Verify the template exists before attempting to clone from it.
template_exists="$(
"${PSQL}" -h "${PG_HOST}" -p "${PG_PORT}" -U "${PG_SUPERUSER}" -d postgres \
-tAX -c "SELECT 1 FROM pg_database WHERE datname = '${TEMPLATE_DB}';"
)"
if [[ "${template_exists}" != "1" ]]; then
log "Template DB '${TEMPLATE_DB}' does not exist."
log "Run scripts/e2e/bake_template.sh once before the first e2e run."
exit 1
fi
"${PSQL}" -h "${PG_HOST}" -p "${PG_PORT}" -U "${PG_SUPERUSER}" -d postgres \
-v ON_ERROR_STOP=1 -X -q <<SQL
SELECT pg_terminate_backend(pid)
FROM pg_stat_activity
WHERE datname = '${E2E_DB}'
AND pid <> pg_backend_pid();
DROP DATABASE IF EXISTS ${E2E_DB};
CREATE DATABASE ${E2E_DB} TEMPLATE ${TEMPLATE_DB} OWNER ${OWNER_ROLE};
SQL
exit 0