import { eq } from 'drizzle-orm' import { db } from '~/drizzle/db' import { systemSettings } from '~/drizzle/schema' import { CacheService } from '~~/server/services/cacheService' export default defineEventHandler(async (event) => { const user = event.context.user if (!user) throw createError({ statusCode: 401, message: '未登录' }) if (!['ADMIN', 'SUPER_ADMIN'].includes(user.role)) throw createError({ statusCode: 403, message: '仅管理员可修改酷狗配置' }) const body = await readBody(event) const baseUrl = String(body?.kugouApiBaseUrl || '').trim() if (baseUrl && !/^https?:\/\//i.test(baseUrl)) { throw createError({ statusCode: 400, message: 'kugouApiBaseUrl 需要是合法的 http(s) URL,留空表示禁用 sidecar' }) } const rows = await db.select().from(systemSettings).limit(1) const patch: Record = { kugouApiBaseUrl: baseUrl || null, updatedAt: new Date(), } if (!rows[0]) { await db.insert(systemSettings).values(patch) } else { await db.update(systemSettings).set(patch).where(eq(systemSettings.id, rows[0].id)) } try { const cs = CacheService.getInstance() await cs.setSystemSettings?.({ ...(rows[0] || {}), ...patch }) } catch {} return { ok: true, kugouApiBaseUrl: baseUrl || null } })