From 51cd84e7eec556fb99332bfddab07b3985d151c2 Mon Sep 17 00:00:00 2001 From: Vojtech Mares Date: Sun, 25 Jun 2023 16:00:34 +0200 Subject: [PATCH] feat(prisma): seed static data from `content/` --- prisma/seed.ts | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 prisma/seed.ts diff --git a/prisma/seed.ts b/prisma/seed.ts new file mode 100644 index 0000000..ce45b38 --- /dev/null +++ b/prisma/seed.ts @@ -0,0 +1,53 @@ +import { prisma } from "~/server/db"; +import { getAllTrainingsWithMetadata } from "~/lib/content/training"; + +async function seed() { + const trainings = await getAllTrainingsWithMetadata(); + let instertedTrainings = []; + + for (const training of trainings) { + instertedTrainings.push( + await prisma.training.upsert({ + where: { id: training.metadata.id }, + update: { + id: training.metadata.id , + name: training.metadata.name, + slug: training.metadata.slug, + description: training.metadata.description, + days: training.metadata.days, + weight: training.metadata.weight, + draft: training.metadata.draft, + logoURL: training.metadata.logoURL, + repositoryURL: training.metadata.repositoryURL, + priceOpen: training.metadata.priceOpen, + priceCorporate: training.metadata.priceCorporate, + content: training.content, + }, + create: { + id: training.metadata.id , + name: training.metadata.name, + slug: training.metadata.slug, + description: training.metadata.description, + days: training.metadata.days, + weight: training.metadata.weight, + draft: training.metadata.draft, + logoURL: training.metadata.logoURL, + repositoryURL: training.metadata.repositoryURL, + priceOpen: training.metadata.priceOpen, + priceCorporate: training.metadata.priceCorporate, + content: training.content, + }, + }) + ); + } +} + +seed() + .then(async () => { + await prisma.$disconnect() + }) + .catch(async (e) => { + console.error(e) + await prisma.$disconnect() + process.exit(1) + });