| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- 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())
|