Files
veridian/server/api/settings/index.get.ts
T

63 lines
1.7 KiB
TypeScript

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,
}
};
if (existing) {
if (!("rename" in existing.systemAssistants) || "rerank" in existing.systemAssistants) {
const [updated] = await db.update(settings)
.set({
systemAssistants: {
...defaultSystemAssistants,
rename: existing.systemAssistants.rename ?? defaultSystemAssistants.rename,
},
})
.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;
});