Optimised imoprt earthquakes

This commit is contained in:
Tim Howitz 2025-05-26 14:40:06 +01:00
parent 8a48857ac0
commit a8fe047019

View File

@ -42,20 +42,19 @@ export async function POST() {
const failedImports: { row: CsvRow; reason: string }[] = [];
// Fetch all observatories once to avoid repeated queries
// Fetch all observatories and users once
const observatories = await prisma.observatory.findMany({
select: { id: true, latitude: true, longitude: true },
});
const earthquakes = await Promise.all(
records.map(async (row) => {
const creators = await prisma.user.findMany({
where: { role: { in: ["SCIENTIST", "ADMIN"] } },
});
const earthquakes = records.map((row) => {
const randomCreator = creators.length > 0 ? creators[getRandomNumber(0, creators.length - 1)] : null;
if (!randomCreator) {
failedImports.push({ row, reason: `RandomCreator: ${randomCreator}` });
failedImports.push({ row, reason: `No creator found` });
return null;
}
@ -97,8 +96,7 @@ export async function POST() {
creatorId: randomCreator.id,
observatories: { connect: nearbyObservatories },
};
})
);
});
const validEarthquakes = earthquakes.filter(
(earthquake): earthquake is NonNullable<typeof earthquake> => earthquake !== null