/
Vibek
/
Agent_GG
Обзор
Документация
Войти
/
Vibek
/
Agent_GG
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
scripts/databases.sh
121 строка
3 KB
Vladimir
Добавить единые скрипты управления стеком MVP.
25 май 2026, 21:13
25 май 2026, 21:13
d142da3
Код
Авторство
О чём код?
#!/usr/bin/env bash set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)" COMPOSE_FILE="${PROJECT_ROOT}/docker-compose.yml" SERVICES=("db" "metrics_db") READY_TIMEOUT_SECONDS=90 if ! command -v docker >/dev/null 2>&1; then echo "ERROR: docker is not installed or not in PATH." >&2 exit 1 fi if docker compose version >/dev/null 2>&1; then COMPOSE_CMD=(docker compose) elif command -v docker-compose >/dev/null 2>&1; then COMPOSE_CMD=(docker-compose) else echo "ERROR: neither 'docker compose' nor 'docker-compose' is available." >&2 exit 1 fi run_compose() { "${COMPOSE_CMD[@]}" -f "${COMPOSE_FILE}" "$@" } wait_for_postgres() { local service="$1" local elapsed=0 local step=2 echo "Waiting for ${service} to become ready..." while (( elapsed < READY_TIMEOUT_SECONDS )); do if run_compose exec -T "${service}" sh -lc 'pg_isready -U "$POSTGRES_USER" -d "$POSTGRES_DB"' >/dev/null 2>&1; then echo "${service} is ready." return 0 fi sleep "${step}" elapsed=$((elapsed + step)) done echo "ERROR: ${service} is not ready after ${READY_TIMEOUT_SECONDS}s." >&2 return 1 } ensure_metrics_schema() { echo "Ensuring metrics schema/views are up to date..." run_compose exec -T metrics_db sh -lc \ "psql -v ON_ERROR_STOP=1 -U \"\$POSTGRES_USER\" -d \"\$POSTGRES_DB\" -c \"DROP VIEW IF EXISTS metrics_kpi_24h, metrics_fallback_breakdown_24h, metrics_tool_calls_24h;\"" \ >/dev/null run_compose exec -T metrics_db sh -lc \ 'psql -v ON_ERROR_STOP=1 -U "$POSTGRES_USER" -d "$POSTGRES_DB" -f /docker-entrypoint-initdb.d/01_metrics_schema.sql' \ >/dev/null echo "Metrics schema/views are ready." } start_databases() { echo "Starting services: ${SERVICES[*]}" run_compose up -d "${SERVICES[@]}" --pull never wait_for_postgres db wait_for_postgres metrics_db ensure_metrics_schema echo echo "Databases are ready:" run_compose ps "${SERVICES[@]}" } stop_databases() { echo "Stopping services: ${SERVICES[*]}" run_compose stop "${SERVICES[@]}" run_compose ps "${SERVICES[@]}" } status_databases() { run_compose ps "${SERVICES[@]}" } logs_databases() { run_compose logs --tail=120 "${SERVICES[@]}" } usage() { cat <<'EOF' Usage: ./scripts/databases.sh <command> Commands: start Start db + metrics_db, wait readiness, ensure metrics schema stop Stop db + metrics_db status Show service status logs Show recent logs EOF } main() { local command="${1:-}" case "${command}" in start) start_databases ;; stop) stop_databases ;; status) status_databases ;; logs) logs_databases ;; *) usage exit 1 ;; esac } main "$@"