From bb65f261cb88c53787139bb32279d78f21e9404e Mon Sep 17 00:00:00 2001 From: Zain Fathoni Date: Tue, 20 Sep 2022 18:57:37 +0800 Subject: [PATCH] feat: seed activity using the existing models --- prisma/seed.ts | 36 +++++++++++++++++++++++++++++------- 1 file changed, 29 insertions(+), 7 deletions(-) diff --git a/prisma/seed.ts b/prisma/seed.ts index 4151a90..cb54905 100644 --- a/prisma/seed.ts +++ b/prisma/seed.ts @@ -1,20 +1,42 @@ import { PrismaClient } from '@prisma/client' -import { categories } from '../app/model/categories' +import { categories as categoriesSeed } from '../app/model/categories' +import { activities as activitiesSeed } from '../app/model/activities' const prisma = new PrismaClient() async function main() { - // create categories - await Promise.all([ - categories.map(async (category) => { - await prisma.category.create({ + // create categories from models seed + const categories = await Promise.all( + categoriesSeed.map(async (category) => + prisma.category.create({ data: { title: category.title, slug: category.slug, }, }) - }), - ]) + ) + ) + + const categoryIdBySlug = categories.reduce((acc, category) => { + acc[category.slug] = category.id + return acc + }, {}) + + // create activities from models seed + await Promise.all( + activitiesSeed + .filter((activity) => categoryIdBySlug[activity.categorySlug]) // filter out activities with invalid categorySlug + .map(async (activity) => + prisma.activity.create({ + data: { + name: activity.nama, + description: activity.ringkasan, + url: activity.link, + categoryId: categoryIdBySlug[activity.categorySlug], + }, + }) + ) + ) } main()