import { eq } from 'drizzle-orm'; import { settings } from '~~/drizzle/schema'; import { db } from '~~/server/lib/db'; const defaultAppearance = { colorScheme: 'system' as const, accent: 'violet', neutral: 'zinc', hinting: 0, fontSize: 'md', }; export default defineEventHandler(async (event) => { await protectRoute(event); const userId = event.context.user!.id as string; let existing = await db.query.settings.findFirst({ where: { userId }, }); const defaultSystemAssistants = { rename: { enabled: false, modelId: null, }, rerank: { enabled: false, modelId: null, } }; if (existing) { const missingSystemAssistants = Object.keys(defaultSystemAssistants).filter(key => !(key in existing!.systemAssistants)); if (missingSystemAssistants.length > 0) { const [updated] = await db.update(settings) .set({ systemAssistants: { ...defaultSystemAssistants, ...existing.systemAssistants, }, }) .where(eq(settings.id, existing.id)).returning(); if (!updated) { throw createError({ statusCode: 500, statusMessage: 'Failed to update settings', message: 'Failed to update settings', }); } existing = updated; } return existing; } const [created] = await db.insert(settings) .values({ userId, systemAssistants: defaultSystemAssistants, appearance: defaultAppearance, }) .returning(); return created; });