Commit 17bd7d213a12ca3c568756b363c39330d4b457a5
1 parent
f5fc6ea7
fix: 一键验收先判断空库再 init,避免 db:status 预先建出迁移表
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011X363N3XYVt41WUtnjtDZH
Showing
2 changed files
with
16 additions
and
1 deletions
apps/voko-server/tools/db-is-empty.mjs
0 → 100644
| 1 | +#!/usr/bin/env node | ||
| 2 | +/** 输出 voko 库是否为空(无任何表),供本地一键验收决定是否执行 db:init。不会建任何表。 */ | ||
| 3 | +import { createDb } from '@drama/db' | ||
| 4 | + | ||
| 5 | +import { databaseUrlFromArgs } from '../src/db/env-file.js' | ||
| 6 | + | ||
| 7 | +const db = createDb({ url: databaseUrlFromArgs(process.argv.slice(2)), pool: { min: 1, max: 1 } }) | ||
| 8 | +try { | ||
| 9 | + const [rows] = await db.raw('SELECT COUNT(*) AS n FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE()') | ||
| 10 | + console.log(Number(rows[0].n) === 0 ? 'empty' : 'not-empty') | ||
| 11 | +} finally { | ||
| 12 | + await db.destroy() | ||
| 13 | +} |
tools/scripts/verify-local.sh
| @@ -9,8 +9,10 @@ node -e 'if (Number(process.versions.node.split(".")[0]) < 24) { console.error(" | @@ -9,8 +9,10 @@ node -e 'if (Number(process.versions.node.split(".")[0]) < 24) { console.error(" | ||
| 9 | 9 | ||
| 10 | pnpm install | 10 | pnpm install |
| 11 | pnpm mysql:up | 11 | pnpm mysql:up |
| 12 | -if ! pnpm --silent --filter @voko/server db:status >/dev/null 2>&1; then | 12 | +if [ "$(node apps/voko-server/tools/db-is-empty.mjs)" = "empty" ]; then |
| 13 | pnpm --filter @voko/server db:init | 13 | pnpm --filter @voko/server db:init |
| 14 | +else | ||
| 15 | + pnpm --filter @voko/server db:migrate | ||
| 14 | fi | 16 | fi |
| 15 | pnpm dev:user admin@example.test admin123 | 17 | pnpm dev:user admin@example.test admin123 |
| 16 | 18 |