0.8.0.0
This commit is contained in:
Executable
+98
@@ -0,0 +1,98 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 修复 wang@example.com 用户的成员代数数据
|
||||
|
||||
SSH_HOST="180.76.240.104-root"
|
||||
REMOTE_DIR="/var/www/chinese-family-tree"
|
||||
DB_NAME="family_tree"
|
||||
|
||||
echo "========================================="
|
||||
echo "修复 wang@example.com 用户的成员代数数据"
|
||||
echo "========================================="
|
||||
|
||||
# 在服务器上执行 SQL 查询和修复
|
||||
ssh $SSH_HOST bash << 'ENDSSH'
|
||||
cd /var/www/chinese-family-tree
|
||||
|
||||
echo ""
|
||||
echo "1. 查询当前数据状态..."
|
||||
echo ""
|
||||
|
||||
sudo -u postgres psql -d family_tree << 'SQLEOF'
|
||||
-- 查看 wang@example.com 用户信息
|
||||
SELECT id, email, name FROM "User" WHERE email = 'wang@example.com';
|
||||
|
||||
-- 查看该用户的家族树
|
||||
SELECT ft.id, ft.name, ft."rootMemberId", ft."ownerId"
|
||||
FROM "FamilyTree" ft
|
||||
JOIN "User" u ON ft."ownerId" = u.id
|
||||
WHERE u.email = 'wang@example.com';
|
||||
|
||||
-- 查看成员代数分布
|
||||
SELECT fm.generation, COUNT(*) as count, STRING_AGG(fm."fullName", ', ' ORDER BY fm."createdAt") as members
|
||||
FROM "FamilyMember" fm
|
||||
JOIN "FamilyTree" ft ON fm."treeId" = ft.id
|
||||
JOIN "User" u ON ft."ownerId" = u.id
|
||||
WHERE u.email = 'wang@example.com'
|
||||
GROUP BY fm.generation
|
||||
ORDER BY fm.generation;
|
||||
SQLEOF
|
||||
|
||||
echo ""
|
||||
echo "2. 检查是否需要修复..."
|
||||
echo ""
|
||||
|
||||
# 获取最小代数
|
||||
MIN_GEN=$(sudo -u postgres psql -d family_tree -t -A -c "
|
||||
SELECT MIN(fm.generation)
|
||||
FROM \"FamilyMember\" fm
|
||||
JOIN \"FamilyTree\" ft ON fm.\"treeId\" = ft.id
|
||||
JOIN \"User\" u ON ft.\"ownerId\" = u.id
|
||||
WHERE u.email = 'wang@example.com';
|
||||
")
|
||||
|
||||
echo "当前最小代数: $MIN_GEN"
|
||||
|
||||
if [ "$MIN_GEN" -gt 1 ]; then
|
||||
OFFSET=$((MIN_GEN - 1))
|
||||
echo "需要将所有代数减少 $OFFSET"
|
||||
echo ""
|
||||
echo "3. 执行修复..."
|
||||
|
||||
sudo -u postgres psql -d family_tree << SQLEOF
|
||||
-- 开始事务
|
||||
BEGIN;
|
||||
|
||||
-- 更新所有成员的代数
|
||||
UPDATE "FamilyMember" fm
|
||||
SET generation = generation - $OFFSET
|
||||
FROM "FamilyTree" ft, "User" u
|
||||
WHERE fm."treeId" = ft.id
|
||||
AND ft."ownerId" = u.id
|
||||
AND u.email = 'wang@example.com';
|
||||
|
||||
-- 查看修复后的结果
|
||||
SELECT fm.generation, COUNT(*) as count, STRING_AGG(fm."fullName", ', ' ORDER BY fm."createdAt") as members
|
||||
FROM "FamilyMember" fm
|
||||
JOIN "FamilyTree" ft ON fm."treeId" = ft.id
|
||||
JOIN "User" u ON ft."ownerId" = u.id
|
||||
WHERE u.email = 'wang@example.com'
|
||||
GROUP BY fm.generation
|
||||
ORDER BY fm.generation;
|
||||
|
||||
-- 提交事务
|
||||
COMMIT;
|
||||
SQLEOF
|
||||
|
||||
echo ""
|
||||
echo "✅ 修复完成!"
|
||||
else
|
||||
echo "✅ 代数正常(从第1世开始),无需修复"
|
||||
fi
|
||||
|
||||
ENDSSH
|
||||
|
||||
echo ""
|
||||
echo "========================================="
|
||||
echo "修复脚本执行完成"
|
||||
echo "========================================="
|
||||
Reference in New Issue
Block a user