54 lines
1.3 KiB
JavaScript
54 lines
1.3 KiB
JavaScript
|
|
import { PrismaClient } from '@prisma/client';
|
||
|
|
import fs from 'fs';
|
||
|
|
import path from 'path';
|
||
|
|
|
||
|
|
const prisma = new PrismaClient();
|
||
|
|
|
||
|
|
async function insertCities() {
|
||
|
|
try {
|
||
|
|
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 },
|
||
|
|
});
|
||
|
|
|
||
|
|
if (!state) {
|
||
|
|
console.log(`❌ State not found: ${stateName}`);
|
||
|
|
continue;
|
||
|
|
}
|
||
|
|
|
||
|
|
const filePath = path.join(statesFolder, file);
|
||
|
|
const citiesData = JSON.parse(
|
||
|
|
fs.readFileSync(filePath, 'utf-8')
|
||
|
|
);
|
||
|
|
|
||
|
|
await prisma.cities.createMany({
|
||
|
|
data: citiesData.map((city) => ({
|
||
|
|
stateXid: state.id,
|
||
|
|
cityName:
|
||
|
|
typeof city === 'string'
|
||
|
|
? city.trim()
|
||
|
|
: city.cityName.trim(),
|
||
|
|
})),
|
||
|
|
skipDuplicates: true,
|
||
|
|
});
|
||
|
|
|
||
|
|
console.log(`✅ ${stateName} cities inserted`);
|
||
|
|
}
|
||
|
|
|
||
|
|
console.log('🎉 All cities inserted successfully');
|
||
|
|
} catch (error) {
|
||
|
|
console.error('Error inserting cities:', error);
|
||
|
|
} finally {
|
||
|
|
await prisma.$disconnect();
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
insertCities();
|