chore: load db credentials from .env in helper scripts

This commit is contained in:
icy
2025-11-06 19:12:45 +08:00
parent e42d10b960
commit 0883df7ab9
2 changed files with 116 additions and 66 deletions

View File

@@ -1,6 +1,6 @@
#!/bin/bash
set -e
set -euo pipefail
# 保证从仓库根目录运行
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
@@ -22,51 +22,66 @@ else
exit 1
fi
# 加载数据库配置
ENV_FILE=".env"
if [ -f "$ENV_FILE" ]; then
echo "📁 加载 .env 配置..."
set -a
# shellcheck disable=SC1090
source "$ENV_FILE"
set +a
else
echo "⚠️ 未找到 .env 文件,使用默认数据库配置"
fi
POSTGRES_HOST=${POSTGRES_HOST:-postgres}
POSTGRES_PORT=${POSTGRES_PORT:-5432}
POSTGRES_DB=${POSTGRES_DB:-nofx}
POSTGRES_USER=${POSTGRES_USER:-nofx}
POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-}
POSTGRES_SERVICE=${POSTGRES_SERVICE:-postgres}
POSTGRES_CONTAINER_NAME=${POSTGRES_CONTAINER_NAME:-nofx-postgres}
# 获取 PostgreSQL 容器 ID
POSTGRES_CONTAINER=$($DOCKER_COMPOSE_CMD ps -q "$POSTGRES_SERVICE" 2>/dev/null || true)
if [ -z "$POSTGRES_CONTAINER" ]; then
POSTGRES_CONTAINER=$(docker ps -q --filter "name=$POSTGRES_CONTAINER_NAME" | head -n 1)
fi
if [ -z "$POSTGRES_CONTAINER" ]; then
echo "❌ 找不到 PostgreSQL 容器 (${POSTGRES_SERVICE}/${POSTGRES_CONTAINER_NAME})"
echo "💡 请确认数据库服务已启动"
exit 1
fi
PG_ENV_ARGS=()
if [ -n "$POSTGRES_PASSWORD" ]; then
PG_ENV_ARGS=(--env "PGPASSWORD=$POSTGRES_PASSWORD")
fi
run_psql() {
local sql="$1"
docker exec -i "${PG_ENV_ARGS[@]}" "$POSTGRES_CONTAINER" \
psql -v ON_ERROR_STOP=1 --pset pager=off -U "$POSTGRES_USER" -d "$POSTGRES_DB" -c "$sql"
}
echo "📋 数据库容器: $POSTGRES_CONTAINER"
echo "📋 连接参数: $POSTGRES_HOST:${POSTGRES_PORT}/$POSTGRES_DB (user: $POSTGRES_USER)"
echo "📊 数据库概览:"
$DOCKER_COMPOSE_CMD exec postgres psql -U nofx -d nofx --pset pager=off -c "
SELECT relname as \"表名\", n_live_tup as \"记录数\"
FROM pg_stat_user_tables
WHERE n_live_tup > 0
ORDER BY relname;
"
run_psql "SELECT relname AS \"表名\", n_live_tup AS \"记录数\" FROM pg_stat_user_tables WHERE n_live_tup > 0 ORDER BY relname;"
echo -e "\n🤖 AI模型配置:"
$DOCKER_COMPOSE_CMD exec postgres psql -U nofx -d nofx --pset pager=off -c "
SELECT id, name, provider, enabled,
CASE WHEN api_key != '' THEN '已配置' ELSE '未配置' END as api_key_status
FROM ai_models ORDER BY id;
"
run_psql "SELECT id, name, provider, enabled, CASE WHEN api_key != '' THEN '已配置' ELSE '未配置' END AS api_key_status FROM ai_models ORDER BY id;"
echo -e "\n🏢 交易所配置:"
$DOCKER_COMPOSE_CMD exec postgres psql -U nofx -d nofx --pset pager=off -c "
SELECT id, name, type, enabled,
CASE WHEN api_key != '' THEN '已配置' ELSE '未配置' END as api_key_status
FROM exchanges ORDER BY id;
"
run_psql "SELECT id, name, type, enabled, CASE WHEN api_key != '' THEN '已配置' ELSE '未配置' END AS api_key_status FROM exchanges ORDER BY id;"
echo -e "\n⚙ 关键系统配置:"
$DOCKER_COMPOSE_CMD exec postgres psql -U nofx -d nofx --pset pager=off -c "
SELECT key,
CASE
WHEN LENGTH(value) > 50 THEN LEFT(value, 50) || '...'
ELSE value
END as value
FROM system_config
WHERE key IN ('beta_mode', 'api_server_port', 'default_coins', 'jwt_secret')
ORDER BY key;
"
run_psql "SELECT key, CASE WHEN LENGTH(value) > 50 THEN LEFT(value, 50) || '...' ELSE value END AS value FROM system_config WHERE key IN ('beta_mode', 'api_server_port', 'default_coins', 'jwt_secret') ORDER BY key;"
echo -e "\n🎟 内测码统计:"
$DOCKER_COMPOSE_CMD exec postgres psql -U nofx -d nofx --pset pager=off -c "
SELECT
CASE WHEN used THEN '已使用' ELSE '未使用' END as status,
COUNT(*) as count
FROM beta_codes
GROUP BY used
ORDER BY used;
"
run_psql "SELECT CASE WHEN used THEN '已使用' ELSE '未使用' END AS status, COUNT(*) AS count FROM beta_codes GROUP BY used ORDER BY used;"
echo -e "\n👥 用户信息:"
$DOCKER_COMPOSE_CMD exec postgres psql -U nofx -d nofx --pset pager=off -c "
SELECT id, email, otp_verified, created_at FROM users ORDER BY created_at;
"
run_psql "SELECT id, email, otp_verified, created_at FROM users ORDER BY created_at;"