Files
Henry_Du 4ce4649aaf
Build VoiceHub FPK / build-fpk (push) Failing after 56m5s
Build and Push Docker Image / build-and-push (push) Canceled after 1h9m35s
初次提交
2026-09-06 08:19:02 +08:00

70 lines
1.8 KiB
TypeScript

import { createError, defineEventHandler } from 'h3'
import { db } from '~/drizzle/db'
import { users } from '~/drizzle/schema'
import { count, sql } from 'drizzle-orm'
export default defineEventHandler(async (event) => {
try {
const status = {
connected: false,
tables: {
user: false,
song: false,
vote: false,
schedule: false,
notification: false
},
userCount: 0
}
// 检查数据库连接
try {
await db.execute(sql`SELECT 1`)
status.connected = true
} catch (error) {
console.error('数据库连接失败:', error)
return { success: false, status, error: '数据库连接失败' }
}
// 检查各个表是否存在
const tables = ['user', 'song', 'vote', 'schedule', 'notification']
for (const tableName of tables) {
try {
const result = await db.execute(sql`
SELECT EXISTS (
SELECT FROM information_schema.tables
WHERE table_schema = 'public'
AND table_name = ${tableName}
)
`)
status.tables[tableName] = result[0]?.exists || false
} catch (error) {
console.error(`检查表 ${tableName} 失败:`, error)
status.tables[tableName] = false
}
}
// 如果表存在,获取记录数
if (status.tables.user) {
try {
const userCountResult = await db.select({ count: count() }).from(users)
status.userCount = userCountResult[0]?.count || 0
} catch (error) {
console.error('获取用户数量失败:', error)
}
}
return {
success: true,
status
}
} catch (error) {
console.error('检查数据库状态失败:', error)
throw createError({
statusCode: 500,
statusMessage: '检查数据库状态失败: ' + error.message
})
}
})