feat: 初始化慧遇书院官网一期

This commit is contained in:
2026-08-12 18:01:17 +08:00
commit 5d31ee5743
101 changed files with 17259 additions and 0 deletions

21
server/api/health.get.ts Normal file
View 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 },
}
})