import prisma from '../src/lib/prisma' import { decrypt } from '../src/lib/crypto' function extractBirthDate(idCard: string): Date | null { if (idCard.length === 18) { const y = parseInt(idCard.substring(6, 10)) const m = parseInt(idCard.substring(10, 12)) const d = parseInt(idCard.substring(12, 14)) if (y && m && d) return new Date(y, m - 1, d) } if (idCard.length === 15) { const y = parseInt('19' + idCard.substring(6, 8)) const m = parseInt(idCard.substring(8, 10)) const d = parseInt(idCard.substring(10, 12)) if (y && m && d) return new Date(y, m - 1, d) } return null } async function main() { const employees = await prisma.employee.findMany({ select: { id: true, idCardNumber: true, birthDate: true } }) let updated = 0 for (const emp of employees) { if (emp.birthDate) continue if (!emp.idCardNumber) continue let idCard: string try { idCard = decrypt(emp.idCardNumber).toString() } catch { continue } const birthDate = extractBirthDate(idCard) if (birthDate) { await prisma.employee.update({ where: { id: emp.id }, data: { birthDate } }) updated++ } } console.log(`Updated ${updated} employees with birthDate`) await prisma.$disconnect() } main()