90d5698e76
Adds a config jsonb column to agents for per-agent search settings (enabled, rerank, maxResults). Types systemAssistants with rename and rerank sub-objects. Backfills missing systemAssistants keys on settings fetch. Includes generated drizzle migrations.
68 lines
1.8 KiB
TypeScript
68 lines
1.8 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,
|
|
},
|
|
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;
|
|
});
|