import { accessSync, constants, mkdirSync, statfsSync } from 'node:fs' import { dirname, resolve } from 'node:path' export default defineEventHandler(() => { const config = useRuntimeConfig() useDatabase().prepare('SELECT 1').get() const databaseDirectory = dirname(resolve(process.cwd(), config.databasePath)) const uploadsDirectory = resolve(process.cwd(), 'data', 'uploads') mkdirSync(uploadsDirectory, { recursive: true }) accessSync(databaseDirectory, constants.R_OK | constants.W_OK) accessSync(uploadsDirectory, constants.R_OK | constants.W_OK) const disk = statfsSync(resolve(process.cwd(), 'data')) const freeBytes = Number(disk.bavail) * Number(disk.bsize) if (freeBytes < 256 * 1024 * 1024) throw createError({ statusCode: 503, statusMessage: '可用磁盘空间不足' }) return { status: 'ok', timestamp: new Date().toISOString(), version: process.env.APP_VERSION || 'development', checks: { database: 'ok', uploads: 'writable', freeBytes }, } })