import { PrismaClient } from '@prisma/client' const prisma = new PrismaClient() const keyMap: Record = { // OT 'geneza': 'genesis', 'exodul': 'exodus', 'leviticul': 'leviticus', 'numerii': 'numbers', 'numeri': 'numbers', 'deuteronomul': 'deuteronomy', 'deuteronom': 'deuteronomy', 'iosua': 'joshua', 'judecătorii': 'judges', 'judecători': 'judges', 'judecatori': 'judges', 'rut': 'ruth', '1 samuel': '1_samuel', '2 samuel': '2_samuel', '1 împăraţi': '1_kings', '2 împăraţi': '2_kings', '1 imparati': '1_kings', '2 imparati': '2_kings', '1 cronici': '1_chronicles', '2 cronici': '2_chronicles', 'ezra': 'ezra', 'neemia': 'nehemiah', 'estera': 'esther', 'iov': 'job', 'psalmii': 'psalms', 'proverbele': 'proverbs', 'proverbe': 'proverbs', 'eclesiastul': 'ecclesiastes', 'ecclesiastul': 'ecclesiastes', 'cântarea cântărilor': 'song_of_songs', 'cantarea cantarilor': 'song_of_songs', 'isaia': 'isaiah', 'ieremia': 'jeremiah', 'plângerile': 'lamentations', 'plangerile': 'lamentations', 'plângerile lui ieremia': 'lamentations', 'ezechiel': 'ezekiel', 'daniel': 'daniel', 'osea': 'hosea', 'ioel': 'joel', 'amos': 'amos', 'obadia': 'obadiah', 'iona': 'jonah', 'mica': 'micah', 'naum': 'nahum', 'habacuc': 'habakkuk', 'ţefania': 'zephaniah', 'țefania': 'zephaniah', 'tefania': 'zephaniah', 'hagai': 'haggai', 'zaharia': 'zechariah', 'maleahi': 'malachi', // NT 'matei': 'matthew', 'marcu': 'mark', 'luca': 'luke', 'ioan': 'john', 'faptele apostolilor': 'acts', 'romani': 'romans', '1 corinteni': '1_corinthians', '2 corinteni': '2_corinthians', 'galateni': 'galatians', 'efeseni': 'ephesians', 'filipeni': 'philippians', 'coloseni': 'colossians', '1 tesaloniceni': '1_thessalonians', '2 tesaloniceni': '2_thessalonians', '1 timotei': '1_timothy', '2 timotei': '2_timothy', 'tit': 'titus', 'titus': 'titus', 'filimon': 'philemon', 'evrei': 'hebrews', 'iacov': 'james', 'iacob': 'james', '1 petru': '1_peter', '2 petru': '2_peter', '1 ioan': '1_john', '2 ioan': '2_john', '3 ioan': '3_john', 'iuda': 'jude', 'apocalipsa': 'revelation', 'revelaţia': 'revelation', 'revelația': 'revelation', } function toCanonicalBookKey(name: string): string { const k = name.trim().toLowerCase() return keyMap[k] || k.replace(/\s+/g, '_') } async function main() { try { const roVersion = await prisma.bibleVersion.findFirst({ where: { language: { in: ['ro', 'RO'] } } }) if (!roVersion) { throw new Error('No Romanian BibleVersion found (language ro)') } const books = await prisma.bibleBook.findMany({ where: { versionId: roVersion.id }, orderBy: { orderNum: 'asc' } }) let updated = 0 for (const b of books) { const desiredKey = toCanonicalBookKey(b.name) if (b.bookKey !== desiredKey) { await prisma.bibleBook.update({ where: { id: b.id }, data: { bookKey: desiredKey } }) updated++ console.log(`Updated ${b.name}: ${b.bookKey} -> ${desiredKey}`) } } console.log(`Resync complete. Updated ${updated} book keys for RO.`) } catch (err) { console.error('Resync failed:', err) process.exit(1) } finally { await prisma.$disconnect() } } main()