22 lines
1001 B
TypeScript
22 lines
1001 B
TypeScript
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 },
|
|
}
|
|
})
|