// Глобальное хранилище кликов на уровне процесса, общее для всех роутов
// Важно: в serverless/edge окружении память не шарится между инстансами.
// Для dev/Node runtime это обеспечит единый Map для разных route-бандлов.

type GlobalWithClickStorage = typeof globalThis & {
  __CLICK_STORAGE__?: Map<string, number>
}

const g = globalThis as GlobalWithClickStorage
if (!g.__CLICK_STORAGE__) {
  g.__CLICK_STORAGE__ = new Map<string, number>()
}

const storage = g.__CLICK_STORAGE__

export const clickStorage = {
  recordClick(linkId: string): number {
    const currentClicks = storage!.get(linkId) || 0
    const newClicks = currentClicks + 1
    storage!.set(linkId, newClicks)
    console.warn(`Click recorded for ${linkId}: ${newClicks} total`)
    return newClicks
  },
  getClicks(linkId: string): number {
    return storage!.get(linkId) || 0
  },
  getAllClicks(): Record<string, number> {
    return Object.fromEntries(storage!)
  },
}
