SPB Git forge

spb/polyllm

Public
15commits 1branches 0releases
2.2 MBsize
maindefault branch
13 days agolast push
TypeScript 97.4% SQL 1% JavaScript 0.9% CSS 0.6%
1.0 KB · 23 lines typescript
Raw Blame History
1import "server-only";2import { and, eq } from "drizzle-orm";3import { getDb, userModelLabels } from "@/db";45/** User-defined labels ("My research model") keyed by model key. */6export async function modelLabels(userId: string): Promise<Record<string, string>> {7  const rows = await getDb().select({ modelKey: userModelLabels.modelKey, label: userModelLabels.label }).from(userModelLabels).where(eq(userModelLabels.userId, userId));8  return Object.fromEntries(rows.map((r) => [r.modelKey, r.label]));9}1011export async function setModelLabel(userId: string, modelKey: string, label: string | null): Promise<void> {12  const db = getDb();13  const clean = label?.trim().slice(0, 60) ?? "";14  if (!clean) {15    await db.delete(userModelLabels).where(and(eq(userModelLabels.userId, userId), eq(userModelLabels.modelKey, modelKey)));16    return;17  }18  await db19    .insert(userModelLabels)20    .values({ userId, modelKey, label: clean })21    .onConflictDoUpdate({ target: [userModelLabels.userId, userModelLabels.modelKey], set: { label: clean, updatedAt: new Date() } });22}23