Files
psp_api/src/common/utils/tracking-code-generator.util.ts
T

22 lines
607 B
TypeScript
Raw Normal View History

2026-04-22 21:55:40 +03:30
import { randomBytes } from 'crypto'
import { PrismaErrorUtil } from './prisma-error.util'
2026-04-22 21:55:40 +03:30
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')) {
2026-04-22 21:55:40 +03:30
return false
}
return PrismaErrorUtil.hasTarget(error, 'tracking_code')
2026-04-22 21:55:40 +03:30
}