feat(*): Update seeding logic to handle new fields and record the last modified date

This commit is contained in:
Josh Creek
2024-07-12 14:16:30 +01:00
parent 212f674b44
commit 6aac4c5985
6 changed files with 27213 additions and 20951 deletions
+20 -21
View File
@@ -2,9 +2,21 @@ 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 dex from '$lib/helpers/dex.json';
import PokedexMetadataModel from '$lib/models/PokedexMetadata';
import dex from '$lib/helpers/pokedex.json';
// seed pokedex data
// 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;
@@ -13,26 +25,13 @@ export const GET = async () => {
.then(async () => {
const repo = new PokedexEntryRepository();
dex.forEach(async (pokemon) => {
const pokemonModel = new PokedexEntryModel({
order: pokemon.dexOrder,
boxPlacement: {
box: pokemon.boxNumber,
row: pokemon.rowNumber,
column: pokemon.columnNumber
},
pokedexNumber: pokemon.pokedexNumber,
pokemon: pokemon.name,
form: pokemon.form,
generation: pokemon.generation,
originGame: pokemon.originGame,
alternativeOrigin: pokemon.altOriginGame,
howToObtain: pokemon.notesToObtain
});
await repo.create(pokemonModel);
console.log(`Seeded ${pokemon.dexOrder}`);
dex.forEach(async (pokemon: PokedexEntryModel) => {
await repo.create(pokemon);
console.log(`Seeded ${pokemon.pokedexNumber} ${pokemon.pokemon} ${pokemon.form}`);
});
// Update the lastModified field after seeding
await updateLastModified();
})
.finally(() => dbDisconnect());