import { prisma } from "@/lib/db"; import { deleteTopicWithRelations } from "@/lib/services/topic"; export async function deleteAccountWithRelations(accountId: string) { const topics = await prisma.topic.findMany({ where: { accountId }, select: { id: true }, }); for (const topic of topics) { await deleteTopicWithRelations(topic.id); } await prisma.draft.deleteMany({ where: { accountId } }); const publishedRows = await prisma.published.findMany({ where: { accountId }, select: { id: true }, }); const publishedIds = publishedRows.map((row) => row.id); if (publishedIds.length > 0) { const inboundRows = await prisma.inboundReply.findMany({ where: { publishedId: { in: publishedIds } }, select: { id: true }, }); const inboundIds = inboundRows.map((row) => row.id); if (inboundIds.length > 0) { await prisma.replyDraft.deleteMany({ where: { inboundReplyId: { in: inboundIds } } }); await prisma.inboundReply.deleteMany({ where: { id: { in: inboundIds } } }); } await prisma.performanceSnapshot.deleteMany({ where: { publishedId: { in: publishedIds } } }); await prisma.published.deleteMany({ where: { id: { in: publishedIds } } }); } await prisma.brandProfile.deleteMany({ where: { accountId } }); await prisma.productProfile.deleteMany({ where: { accountId } }); await prisma.scan.deleteMany({ where: { accountId } }); await prisma.backgroundJob.deleteMany({ where: { accountId } }); await prisma.actionLog.deleteMany({ where: { accountId } }); await prisma.account.delete({ where: { id: accountId } }); }