feat: 初始化慧遇书院官网一期
This commit is contained in:
21
server/api/health.get.ts
Normal file
21
server/api/health.get.ts
Normal file
@@ -0,0 +1,21 @@
|
||||
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 },
|
||||
}
|
||||
})
|
||||
Reference in New Issue
Block a user