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 228a37a2f6
commit 8a7e2ea631
6 changed files with 27213 additions and 20951 deletions
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+12 -12
View File
@@ -1,31 +1,31 @@
import mongoose, { Schema, Document } from 'mongoose'; import mongoose, { Schema, Document } from 'mongoose';
export interface PokedexEntry extends Document { export interface PokedexEntry extends Document {
order: number;
boxPlacement: { box: number; row: number; column: number };
pokedexNumber: number; pokedexNumber: number;
boxPlacement: { box: number; row: number; column: number };
pokemon: string; pokemon: string;
form: string; form: string;
generation: number; canGigantamax: boolean;
originGame: string; regionToCatchIn: string;
alternativeOrigin: string; gamesToCatchIn: string[];
howToObtain: string; regionToEvolveIn: string;
notes: string;
} }
const pokedexEntrySchema = new Schema<PokedexEntry>({ const pokedexEntrySchema = new Schema<PokedexEntry>({
order: Number, pokedexNumber: Number,
boxPlacement: { boxPlacement: {
box: Number, box: Number,
row: Number, row: Number,
column: Number column: Number
}, },
pokedexNumber: Number,
pokemon: String, pokemon: String,
form: String, form: String,
generation: Number, canGigantamax: Boolean,
originGame: String, regionToCatchIn: String,
alternativeOrigin: String, gamesToCatchIn: Array<string>,
howToObtain: String regionToEvolveIn: String,
notes: String
}); });
export default mongoose.model<PokedexEntry>('PokedexEntry', pokedexEntrySchema); export default mongoose.model<PokedexEntry>('PokedexEntry', pokedexEntrySchema);
+14
View File
@@ -0,0 +1,14 @@
import mongoose, { Schema, Document } from 'mongoose';
export interface PokedexMetadata extends Document {
lastModified: Date;
}
const pokedexMetadataSchema = new Schema<PokedexMetadata>({
lastModified: {
type: Date,
default: Date.now
}
});
export default mongoose.model<PokedexMetadata>('PokedexMetadata', pokedexMetadataSchema);
@@ -0,0 +1,16 @@
import { json } from '@sveltejs/kit';
import { dbConnect, dbDisconnect } from '$lib/utils/db';
import PokedexMetadataModel from '$lib/models/PokedexMetadata';
export const GET = async () => {
await dbConnect();
const metadata = await PokedexMetadataModel.findOne();
await dbDisconnect();
if (metadata) {
return json({ lastModified: metadata.lastModified });
} else {
return json({ message: 'Metadata not found' }, { status: 404 });
}
};
+19 -20
View File
@@ -2,9 +2,21 @@ import { json } from '@sveltejs/kit';
import { dbConnect, dbDisconnect } from '$lib/utils/db'; import { dbConnect, dbDisconnect } from '$lib/utils/db';
import PokedexEntryModel from '$lib/models/PokedexEntry'; import PokedexEntryModel from '$lib/models/PokedexEntry';
import PokedexEntryRepository from '$lib/repositories/PokedexEntryRepository'; 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 () => { export const GET = async () => {
// Immediately return if not in development to prevent seeding extra data // Immediately return if not in development to prevent seeding extra data
return; return;
@@ -13,26 +25,13 @@ export const GET = async () => {
.then(async () => { .then(async () => {
const repo = new PokedexEntryRepository(); const repo = new PokedexEntryRepository();
dex.forEach(async (pokemon) => { dex.forEach(async (pokemon: PokedexEntryModel) => {
const pokemonModel = new PokedexEntryModel({ await repo.create(pokemon);
order: pokemon.dexOrder, console.log(`Seeded ${pokemon.pokedexNumber} ${pokemon.pokemon} ${pokemon.form}`);
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); // Update the lastModified field after seeding
console.log(`Seeded ${pokemon.dexOrder}`); await updateLastModified();
});
}) })
.finally(() => dbDisconnect()); .finally(() => dbDisconnect());