Files
LivingDexTracker/src/routes/api/seed/+server.ts
T
2024-07-14 19:45:06 +01:00

50 lines
1.7 KiB
TypeScript

import { json } from '@sveltejs/kit';
import { dbConnect, dbDisconnect } from '$lib/utils/db';
import PokedexEntryModel from '$lib/models/PokedexEntry';
import PokedexEntryRepository from '$lib/repositories/PokedexEntryRepository';
import RegionGameMapping from '$lib/models/RegionGameMapping';
import RegionGameMappingRepository from '$lib/repositories/RegionGameMappingRepository';
import PokedexMetadataModel from '$lib/models/PokedexMetadata';
import dex from '$lib/helpers/pokedex.json';
import RegionGameMappingJson from '$lib/helpers/region-game-mapping.json';
// Function to update the lastModified field in the metadata collection
const updateLastModified = async () => {
const metadata = await PokedexMetadataModel.findOne();
if (metadata) {
metadata.lastModified = new Date();
await metadata.save();
} else {
await PokedexMetadataModel.create({ lastModified: new Date() });
}
};
// Seed Pokedex data
export const GET = async () => {
// Immediately return if not in development to prevent seeding extra data
return;
await dbConnect()
.then(async () => {
// Create pokedex entries
const repo = new PokedexEntryRepository();
dex.forEach(async (pokemon: PokedexEntryModel) => {
await repo.create(pokemon);
console.log(`Seeded ${pokemon.pokedexNumber} ${pokemon.pokemon} ${pokemon.form}`);
});
// Create region-game mappings
const regionGameMappingRepository = new RegionGameMappingRepository();
await regionGameMappingRepository.create(RegionGameMappingJson as RegionGameMapping[]);
// Update the lastModified field after seeding
await updateLastModified();
})
.finally(() => dbDisconnect());
return json({
message: 'seeded'
});
};