19 lines
989 B
TypeScript
19 lines
989 B
TypeScript
import "server-only";
|
|
import { rawDb, uniqueSlug } from "@/lib/db/client";
|
|
|
|
function upsert(table: "studios" | "labels" | "series" | "actresses" | "genres", name: string): number {
|
|
const trimmed = name.trim();
|
|
if (!trimmed) throw new Error(`empty ${table.slice(0, -1)} name`);
|
|
const existing = rawDb.prepare(`SELECT id FROM ${table} WHERE name = ?`).get(trimmed) as { id: number } | undefined;
|
|
if (existing) return existing.id;
|
|
const slug = uniqueSlug(rawDb, table, trimmed);
|
|
const row = rawDb.prepare(`INSERT INTO ${table} (name, slug) VALUES (?, ?) RETURNING id`).get(trimmed, slug) as { id: number };
|
|
return row.id;
|
|
}
|
|
|
|
export const upsertStudio = (name: string) => upsert("studios", name);
|
|
export const upsertLabel = (name: string) => upsert("labels", name);
|
|
export const upsertSeries = (name: string) => upsert("series", name);
|
|
export const upsertActress = (name: string) => upsert("actresses", name);
|
|
export const upsertGenre = (name: string) => upsert("genres", name);
|