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

/**
 * Resolves a base slug from doctor name to a unique value.
 * Tries `slug`, then `slug-1`, `slug-2`, ... on conflicts.
 */
export async function resolveUniqueDoctorSlug(baseName: string): Promise<string> {
  let slug = slugify(baseName)
  if (!slug) slug = "doctor"

  let n = 0
  for (;;) {
    const candidate = n === 0 ? slug : `${slug}-${n}`
    const existing = await prisma.doctor.findFirst({
      where: { slug: candidate },
      select: { id: true },
    })
    if (!existing) return candidate
    n += 1
  }
}

/** Unique slug from name when updating a doctor (ignores that doctor's row). */
export async function resolveUniqueDoctorSlugForUpdate(
  baseName: string,
  excludeDoctorId: string
): Promise<string> {
  let slug = slugify(baseName)
  if (!slug) slug = "doctor"

  let n = 0
  for (;;) {
    const candidate = n === 0 ? slug : `${slug}-${n}`
    const existing = await prisma.doctor.findFirst({
      where: {
        slug: candidate,
        NOT: { id: excludeDoctorId },
      },
      select: { id: true },
    })
    if (!existing) return candidate
    n += 1
  }
}
