Files
backend/prisma/update-location-options.ts

55 lines
1.5 KiB
TypeScript
Raw Normal View History

import { PrismaClient } from '@prisma/client';
import { PrismaPg } from '@prisma/adapter-pg';
import { Pool } from 'pg';
import {
US_STATES_CO_NE_ND_SD,
US_CITIES_CO_NE_ND_SD,
} from './data/us-cities-co-ne-nd-sd';
const connectionString = process.env.DATABASE_URL;
if (!connectionString) {
console.error('❌ DATABASE_URL env var is required');
process.exit(1);
}
const pool = new Pool({ connectionString });
const adapter = new PrismaPg(pool);
const prisma = new PrismaClient({ adapter });
async function updateFieldOptions(slug: 'state' | 'city', options: unknown[]) {
const fields = await prisma.profileField.findMany({
where: { slug },
select: { id: true, name: true, section: { select: { slug: true } } },
});
if (fields.length === 0) {
console.log(` ⚠️ No ProfileField rows found with slug="${slug}"`);
return;
}
for (const field of fields) {
await prisma.profileField.update({
where: { id: field.id },
data: { options: options as object },
});
console.log(
` ✅ Updated ${field.section.slug}/${slug} (${options.length} options)`,
);
}
}
async function main() {
console.log('🌱 Updating state + city ProfileField options from Excel source...');
await updateFieldOptions('state', US_STATES_CO_NE_ND_SD);
await updateFieldOptions('city', US_CITIES_CO_NE_ND_SD);
console.log('✅ Done.');
}
main()
.catch((e) => {
console.error('❌ Failed to update location options:', e);
process.exit(1);
})
.finally(async () => {
await prisma.$disconnect();
});