import { prisma } from "@/lib/prisma"
import { slugify } from "@/lib/slugify"

/**
 * Resolves a base slug to one that does not collide with existing rows.
 * Appends -2, -3, … after the first conflict (empty base becomes "category").
 */
export async function resolveUniqueSlug(
  baseSlug: string,
  excludeId?: string
): Promise<string> {
  let slug = slugify(baseSlug)
  if (!slug) slug = "category"

  let suffix = 0
  // First try exact slug; on conflict use slug-2, slug-3, ...
  for (;;) {
    const candidate = suffix === 0 ? slug : `${slug}-${suffix + 1}`
    const existing = await prisma.category.findFirst({
      where: {
        slug: candidate,
        ...(excludeId ? { NOT: { id: excludeId } } : {}),
      },
      select: { id: true },
    })
    if (!existing) return candidate
    suffix += 1
  }
}
