import { randomBytes } from 'crypto' import { PrismaErrorUtil } from './prisma-error.util' export function generateTrackingCode(prefix: string, suffixLength: number) { const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789' const bytes = randomBytes(suffixLength) let suffix = '' for (let i = 0; i < suffixLength; i++) { suffix += chars[bytes[i] % chars.length] } return `${prefix}-${suffix}` } export function isTrackingCodeUniqueViolation(error: unknown) { if (!PrismaErrorUtil.isCode(error, 'P2002')) { return false } return PrismaErrorUtil.hasTarget(error, 'tracking_code') }