import fs from 'fs' import path from 'path' import { PrismaClient } from '@prisma/client' export async function seedCities(prisma: PrismaClient) { const statesFolder = path.join(process.cwd(), 'states-cities') const files = fs.readdirSync(statesFolder) for (const file of files) { if (!file.endsWith('.json')) continue const stateName = file.replace('.json', '') const state = await prisma.states.findFirst({ where: { stateName: { equals: stateName, mode: 'insensitive', }, }, }) if (!state) { console.log(`❌ State not found: ${stateName}`) continue } const filePath = path.join(statesFolder, file) const rawData = JSON.parse(fs.readFileSync(filePath, 'utf-8')) if (!rawData.districts) { console.log(`❌ Invalid structure in ${file}`) continue } const allVillages: string[] = [] for (const district of rawData.districts) { for (const sub of district.subDistricts || []) { for (const village of sub.villages || []) { if (village && village.trim()) { allVillages.push(village.trim()) } } } } console.log(`📦 Total villages found in ${stateName}:`, allVillages.length) const result = await prisma.cities.createMany({ data: allVillages.map((village) => ({ stateXid: state.id, cityName: village, })), skipDuplicates: true, }) console.log(`✅ ${stateName} inserted: ${result.count}`) } console.log('🎉 All states processed successfully!') }