mirror of
https://github.com/jcreek/LivingDexTracker.git
synced 2026-07-12 18:43:45 +00:00
feat(*): Update seeding logic to handle new fields and record the last modified date
This commit is contained in:
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -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);
|
||||||
|
|||||||
@@ -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 });
|
||||||
|
}
|
||||||
|
};
|
||||||
@@ -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);
|
|
||||||
console.log(`Seeded ${pokemon.dexOrder}`);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Update the lastModified field after seeding
|
||||||
|
await updateLastModified();
|
||||||
})
|
})
|
||||||
.finally(() => dbDisconnect());
|
.finally(() => dbDisconnect());
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user