Files
BYW-VoiceHub/server/api/system/status.get.ts
T

67 lines
1.9 KiB
TypeScript

import { defineEventHandler } from 'h3'
import { databaseManager } from '~~/server/utils/database-manager'
import { getInstanceId } from '~~/server/utils/instance-id'
import { isTelemetryEnabled } from '~~/server/utils/telemetry'
export default defineEventHandler(async () => {
try {
const instanceId = await getInstanceId()
const telemetryEnabled = await isTelemetryEnabled()
// 获取数据库连接状态
const dbStatus = await databaseManager.getConnectionStatus()
let poolStatus = null
try {
poolStatus = await databaseManager.getConnectionPoolStatus()
} catch (poolError) {
console.warn('[System Status] Failed to get database pool status:', poolError)
}
// 数据库连接测试结果
const dbTestResult = dbStatus.connected
const dbError = dbStatus.connected ? null : dbStatus.error
// 获取系统信息
const systemInfo = {
timestamp: new Date().toISOString(),
uptime: process.uptime(),
nodeVersion: process.version,
platform: process.platform,
arch: process.arch,
memory: {
used: Math.round(process.memoryUsage().heapUsed / 1024 / 1024),
total: Math.round(process.memoryUsage().heapTotal / 1024 / 1024),
external: Math.round(process.memoryUsage().external / 1024 / 1024)
}
}
// 返回完整的系统状态
return {
status: 'ok',
instance: {
instanceId,
telemetryEnabled
},
database: {
connected: dbTestResult,
poolStatus: poolStatus,
connectionInfo: dbStatus,
error: dbError
},
system: systemInfo
}
} catch (error) {
const errorMessage = error instanceof Error ? error.message : 'Unknown error'
return {
status: 'error',
error: errorMessage,
database: {
connected: false,
poolStatus: null,
error: errorMessage
}
}
}
})