From 2224bbfe70aeda9b6c59a93d43b4007cac7ef4de Mon Sep 17 00:00:00 2001 From: amel Date: Wed, 3 Jul 2024 15:32:00 +0800 Subject: [PATCH] seeder Deskripsi: - membuat seeder npx prisma db push - membuat data json role user - membuat data json user No Issues --- package.json | 5 ++- prisma/schema.prisma | 2 +- prisma/seed.ts | 51 +++++++++++++++++++++++++++ src/module/seeder/data/user.json | 29 +++++++++++++++ src/module/seeder/data/user_role.json | 32 +++++++++++++++++ src/module/seeder/index.ts | 4 +++ 6 files changed, 121 insertions(+), 2 deletions(-) create mode 100644 prisma/seed.ts create mode 100644 src/module/seeder/data/user.json create mode 100644 src/module/seeder/data/user_role.json create mode 100644 src/module/seeder/index.ts diff --git a/package.json b/package.json index 4a368e5..db57c44 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,9 @@ "start": "next start", "lint": "next lint" }, + "prisma": { + "seed": "tsx prisma/seed.ts" + }, "dependencies": { "@mantine/carousel": "^7.11.0", "@mantine/charts": "^7.11.0", @@ -53,4 +56,4 @@ "keywords": [], "author": "", "license": "ISC" -} +} \ No newline at end of file diff --git a/prisma/schema.prisma b/prisma/schema.prisma index aaf45b0..06627ab 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -76,7 +76,7 @@ model User { nik String @unique name String phone String @unique - email String @unique + email String? @unique gender String @default("M") //M= Male, F= Female isActive Boolean @default(true) createdAt DateTime @default(now()) diff --git a/prisma/seed.ts b/prisma/seed.ts new file mode 100644 index 0000000..f4947af --- /dev/null +++ b/prisma/seed.ts @@ -0,0 +1,51 @@ +import { seederUser, seederUserRole } from '@/module/seeder'; +import { PrismaClient } from '@prisma/client'; +const prisma = new PrismaClient() + +async function main() { + // USER ROLE + for (let data of seederUserRole) { + await prisma.userRole.upsert({ + where: { + id: data.id + }, + update: { + name: data.name + }, + create: { + id: data.id, + name: data.name, + desc: data.desc + }, + }) + } + + // USER + for (let data of seederUser) { + await prisma.user.upsert({ + where: { + id: data.id + }, + update: { + name: data.name + }, + create: { + id: data.id, + idUserRole: data.idUserRole, + nik: data.nik, + name: data.name, + phone: data.phone, + email: data.email, + gender: data.gender + }, + }) + } +} + +main().then(async () => { + await prisma.$disconnect() +}).catch(async (e) => { + console.error(e) + await prisma.$disconnect() + process.exit(1) +}) \ No newline at end of file diff --git a/src/module/seeder/data/user.json b/src/module/seeder/data/user.json new file mode 100644 index 0000000..a5d98c1 --- /dev/null +++ b/src/module/seeder/data/user.json @@ -0,0 +1,29 @@ +[ + { + "id": "devAmalia", + "idUserRole": "dev", + "nik": "1111111", + "name": "Amalia", + "phone": "6298980185458", + "email": "amalia@bip.com", + "gender": "F" + }, + { + "id": "devLukman", + "idUserRole": "dev", + "nik": "2222222", + "name": "Lukman", + "phone": "6287701790942", + "email": "lukman@bip.com", + "gender": "M" + }, + { + "id": "devMalik", + "idUserRole": "dev", + "nik": "3333333", + "name": "Malik", + "phone": "6289697338821", + "email": "malik@bip.com", + "gender": "M" + } +] \ No newline at end of file diff --git a/src/module/seeder/data/user_role.json b/src/module/seeder/data/user_role.json new file mode 100644 index 0000000..99cf39f --- /dev/null +++ b/src/module/seeder/data/user_role.json @@ -0,0 +1,32 @@ +[ + { + "id": "dev", + "name": "Developer", + "desc": "-" + }, + { + "id": "supadmin", + "name": "Super Admin", + "desc": "-" + }, + { + "id": "cosupadmin", + "name": "Wakil Super Admin", + "desc": "-" + }, + { + "id": "admin", + "name": "Admin", + "desc": "-" + }, + { + "id": "coadmin", + "name": "Wakil Admin", + "desc": "-" + }, + { + "id": "user", + "name": "User", + "desc": "-" + } +] \ No newline at end of file diff --git a/src/module/seeder/index.ts b/src/module/seeder/index.ts new file mode 100644 index 0000000..23a2f5c --- /dev/null +++ b/src/module/seeder/index.ts @@ -0,0 +1,4 @@ +import seederUserRole from "./data/user_role.json"; +import seederUser from "./data/user.json"; + +export { seederUserRole, seederUser } \ No newline at end of file