import "dotenv/config" import { includes, isArray, isPlainObject, map, mapValues } from "lodash-es" import prisma from "../server/utils/prisma.js" import characters from "./seeds/Character.json" with { type: "json" } function parseTimestamps(value, key) { if (includes(["createdAt", "updatedAt"], key)) { return new Date(value) } else { return value } } function deepConvertValues(object, converter) { // converter called with (value, key, object) if (isArray(object)) { return map(object, (element) => deepConvertValues(element, converter)) } else if (isPlainObject(object)) { return mapValues( object, (value, key, object) => { if (isArray(value) || isPlainObject(value)) { return deepConvertValues(value, converter) } else { return converter(value, key, object) } } ) } else { return object } } function deepParseTimestamps(object) { return deepConvertValues(object, parseTimestamps) } async function seedCharacters() { const { count } = await prisma.character.createMany({ data: deepParseTimestamps(characters) }) console.log(`Created ${count} characters.`) } async function main() { await seedCharacters() } main() .catch((error) => { if (error.meta?.message !== "not an error") { console.error(error) process.exit(1) } }) .finally(async () => await prisma.$disconnect())