import "server-only"; import { and, eq } from "drizzle-orm"; import { getDb, userModelLabels } from "@/db"; /** User-defined labels ("My research model") keyed by model key. */ export async function modelLabels(userId: string): Promise> { const rows = await getDb().select({ modelKey: userModelLabels.modelKey, label: userModelLabels.label }).from(userModelLabels).where(eq(userModelLabels.userId, userId)); return Object.fromEntries(rows.map((r) => [r.modelKey, r.label])); } export async function setModelLabel(userId: string, modelKey: string, label: string | null): Promise { const db = getDb(); const clean = label?.trim().slice(0, 60) ?? ""; if (!clean) { await db.delete(userModelLabels).where(and(eq(userModelLabels.userId, userId), eq(userModelLabels.modelKey, modelKey))); return; } await db .insert(userModelLabels) .values({ userId, modelKey, label: clean }) .onConflictDoUpdate({ target: [userModelLabels.userId, userModelLabels.modelKey], set: { label: clean, updatedAt: new Date() } }); }