95 lines
2.1 KiB
Bash
Executable File
95 lines
2.1 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
# 这个脚本用于删除已合并到 000001_init.sql 的旧迁移文件
|
|
# 使用场景:迁移文件合并后,清理旧的分散文件
|
|
|
|
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
MIGRATIONS_DIR="${ROOT_DIR}/backend/migrations"
|
|
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[1;34m'
|
|
NC='\033[0m'
|
|
|
|
log() {
|
|
printf "${BLUE}[clean]${NC} %s\n" "$*"
|
|
}
|
|
|
|
log_success() {
|
|
printf "${GREEN}[clean]${NC} %s\n" "$*"
|
|
}
|
|
|
|
log_warn() {
|
|
printf "${YELLOW}[clean]${NC} %s\n" "$*"
|
|
}
|
|
|
|
log_error() {
|
|
printf "${RED}[clean]${NC} %s\n" "$*" >&2
|
|
}
|
|
|
|
# 要删除的旧迁移文件列表
|
|
OLD_MIGRATIONS=(
|
|
"000002_payment_refund_schema.sql"
|
|
"000003_add_indexes.sql"
|
|
"000004_add_support_status.sql"
|
|
"000005_add_announcements.sql"
|
|
"000006_insert_sample_announcements.sql"
|
|
"000007_add_announcement_permissions.sql"
|
|
"000008_fix_announcement_charset.sql"
|
|
)
|
|
|
|
main() {
|
|
cd "${MIGRATIONS_DIR}"
|
|
|
|
log "检查旧迁移文件..."
|
|
|
|
local found=0
|
|
local file
|
|
for file in "${OLD_MIGRATIONS[@]}"; do
|
|
if [[ -f "${file}" ]]; then
|
|
found=$((found + 1))
|
|
log_warn "发现旧文件:${file}"
|
|
fi
|
|
done
|
|
|
|
if [[ "${found}" == "0" ]]; then
|
|
log_success "没有发现旧的迁移文件,无需清理"
|
|
exit 0
|
|
fi
|
|
|
|
log ""
|
|
log "即将删除 ${found} 个旧迁移文件"
|
|
log "这些文件的内容已经合并到 000001_init.sql 中"
|
|
log ""
|
|
|
|
# 确认删除
|
|
read -p "确认删除?(yes/no): " -r
|
|
echo
|
|
if [[ ! "${REPLY}" =~ ^[Yy][Ee][Ss]$ ]]; then
|
|
log "取消删除"
|
|
exit 0
|
|
fi
|
|
|
|
# 执行删除
|
|
local deleted=0
|
|
for file in "${OLD_MIGRATIONS[@]}"; do
|
|
if [[ -f "${file}" ]]; then
|
|
rm -f "${file}"
|
|
log_success "已删除:${file}"
|
|
deleted=$((deleted + 1))
|
|
fi
|
|
done
|
|
|
|
log ""
|
|
log_success "清理完成,已删除 ${deleted} 个文件"
|
|
log ""
|
|
log "注意事项:"
|
|
log "1. 如果是开发环境,建议执行:./scripts/dev.sh --clean-init"
|
|
log "2. 如果是生产环境,建议执行:./scripts/deploy-prod.sh --clean-init"
|
|
log "3. 这些命令会清理旧数据库并使用新的 000001_init.sql 初始化"
|
|
}
|
|
|
|
main "$@"
|