import { prisma } from '@/lib/prisma' import { Prisma } from '@prisma/client' export async function getOrCreateDeckForNotebook(params: { userId: string notebookId: string | null notebookName?: string | null manualName?: string }) { const { userId, notebookId, notebookName, manualName } = params if (notebookId) { const existing = await prisma.flashcardDeck.findFirst({ where: { userId, notebookId }, }) if (existing) return existing const notebook = await prisma.notebook.findFirst({ where: { id: notebookId, userId }, select: { name: true }, }) if (!notebook) { throw new Error('Notebook not found') } return prisma.flashcardDeck.create({ data: { userId, notebookId, name: notebook.name, }, }).catch(async (error) => { if (error instanceof Prisma.PrismaClientKnownRequestError && error.code === 'P2002') { const raced = await prisma.flashcardDeck.findFirst({ where: { userId, notebookId }, }) if (raced) return raced } throw error }) } const name = (manualName || notebookName || 'Deck').trim().slice(0, 120) if (!name) { throw new Error('Deck name required') } return prisma.flashcardDeck.create({ data: { userId, name, }, }) } export function stripHtmlToText(html: string): string { return html .replace(//gi, ' ') .replace(//gi, ' ') .replace(/<[^>]+>/g, ' ') .replace(/ /g, ' ') .replace(/\s+/g, ' ') .trim() }