diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 91b0431..cec1f07 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -13,6 +13,28 @@ datasource db { url = env("DATABASE_URL") } +model AdminRole { + id String @id @default(cuid()) + name String + isActive Boolean @default(true) + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + Admin Admin[] +} + +model Admin { + id String @id @default(cuid()) + AdminRole AdminRole @relation(fields: [idAdminRole], references: [id]) + idAdminRole String + name String + phone String @unique + email String? @unique + gender String @default("M") //M= Male, F= Female + isActive Boolean @default(true) + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt +} + model UserRole { id String @id @default(cuid()) name String @@ -67,12 +89,12 @@ model User { id String @id @default(cuid()) UserRole UserRole @relation(fields: [idUserRole], references: [id]) idUserRole String - Village Village? @relation(fields: [idVillage], references: [id]) - idVillage String? - Group Group? @relation(fields: [idGroup], references: [id]) - idGroup String? - Position Position? @relation(fields: [idPosition], references: [id]) - idPosition String? + Village Village @relation(fields: [idVillage], references: [id]) + idVillage String + Group Group @relation(fields: [idGroup], references: [id]) + idGroup String + Position Position @relation(fields: [idPosition], references: [id]) + idPosition String nik String @unique name String phone String @unique diff --git a/prisma/seed.ts b/prisma/seed.ts index f4947af..e55648c 100644 --- a/prisma/seed.ts +++ b/prisma/seed.ts @@ -1,8 +1,102 @@ -import { seederUser, seederUserRole } from '@/module/seeder'; +import { seederAdmin, seederAdminRole, seederDesa, seederGroup, seederPosition, seederUser, seederUserRole } from '@/module/seeder'; import { PrismaClient } from '@prisma/client'; const prisma = new PrismaClient() async function main() { + // ADMIN ROLE + for (let data of seederAdminRole) { + await prisma.adminRole.upsert({ + where: { + id: data.id + }, + update: { + name: data.name + }, + create: { + id: data.id, + name: data.name, + }, + }) + } + + // ADMIN + for (let data of seederAdmin) { + await prisma.admin.upsert({ + where: { + id: data.id + }, + update: { + name: data.name, + idAdminRole: data.idAdminRole, + phone: data.phone, + email: data.email, + gender: data.gender + }, + create: { + id: data.id, + idAdminRole: data.idAdminRole, + phone: data.phone, + email: data.email, + gender: data.gender, + name: data.name + }, + }) + } + + // DESA + for (let data of seederDesa) { + await prisma.village.upsert({ + where: { + id: data.id + }, + update: { + name: data.name, + desc: data.desc + }, + create: { + id: data.id, + name: data.name, + desc: data.desc + } + }) + } + + // GROUP + for (let data of seederGroup) { + await prisma.group.upsert({ + where: { + id: data.id + }, + update: { + name: data.name, + idVillage: data.idVillage + }, + create: { + id: data.id, + name: data.name, + idVillage: data.idVillage + } + }) + } + + // POSITION + for (let data of seederPosition) { + await prisma.position.upsert({ + where: { + id: data.id + }, + update: { + name: data.name, + idGroup: data.idGroup + }, + create: { + id: data.id, + name: data.name, + idGroup: data.idGroup + } + }) + } + // USER ROLE for (let data of seederUserRole) { await prisma.userRole.upsert({ @@ -27,10 +121,21 @@ async function main() { id: data.id }, update: { - name: data.name + idVillage: data.idVillage, + idGroup: data.idGroup, + idPosition: data.idPosition, + idUserRole: data.idUserRole, + nik: data.nik, + name: data.name, + phone: data.phone, + email: data.email, + gender: data.gender }, create: { id: data.id, + idVillage: data.idVillage, + idGroup: data.idGroup, + idPosition: data.idPosition, idUserRole: data.idUserRole, nik: data.nik, name: data.name, @@ -40,6 +145,7 @@ async function main() { }, }) } + } main().then(async () => { diff --git a/src/module/seeder/data/admin.json b/src/module/seeder/data/admin.json new file mode 100644 index 0000000..a783b25 --- /dev/null +++ b/src/module/seeder/data/admin.json @@ -0,0 +1,26 @@ +[ + { + "id": "devAmalia", + "idAdminRole": "dev", + "name": "Amalia", + "phone": "628980185458", + "email": "amalia@bip.com", + "gender": "F" + }, + { + "id": "devLukman", + "idAdminRole": "dev", + "name": "Lukman", + "phone": "6287701790942", + "email": "lukman@bip.com", + "gender": "M" + }, + { + "id": "devLukman", + "idAdminRole": "dev", + "name": "Malik", + "phone": "6289697338821", + "email": "malik@bip.com", + "gender": "M" + } +] \ No newline at end of file diff --git a/src/module/seeder/data/admin_role.json b/src/module/seeder/data/admin_role.json new file mode 100644 index 0000000..22a86ae --- /dev/null +++ b/src/module/seeder/data/admin_role.json @@ -0,0 +1,10 @@ +[ + { + "id": "dev", + "name": "Developer" + }, + { + "id": "admin", + "name": "Admin" + } +] \ No newline at end of file diff --git a/src/module/seeder/data/desa.json b/src/module/seeder/data/desa.json new file mode 100644 index 0000000..421ae11 --- /dev/null +++ b/src/module/seeder/data/desa.json @@ -0,0 +1,7 @@ +[ + { + "id": "desa1", + "name": "Darmasaba", + "desc": "-" + } +] \ No newline at end of file diff --git a/src/module/seeder/data/group.json b/src/module/seeder/data/group.json new file mode 100644 index 0000000..a333b68 --- /dev/null +++ b/src/module/seeder/data/group.json @@ -0,0 +1,7 @@ +[ + { + "id": "group1", + "idVillage": "desa1", + "name": "Dinas" + } +] \ No newline at end of file diff --git a/src/module/seeder/data/position.json b/src/module/seeder/data/position.json new file mode 100644 index 0000000..f820921 --- /dev/null +++ b/src/module/seeder/data/position.json @@ -0,0 +1,7 @@ +[ + { + "id": "position1", + "idGroup": "group1", + "name": "Perbekel" + } +] \ No newline at end of file diff --git a/src/module/seeder/data/user.json b/src/module/seeder/data/user.json index 3077cd2..dc7f723 100644 --- a/src/module/seeder/data/user.json +++ b/src/module/seeder/data/user.json @@ -1,29 +1,14 @@ [ { - "id": "devAmalia", - "idUserRole": "dev", + "id": "supadminAmalia", + "idUserRole": "supadmin", + "idVillage": "desa1", + "idGroup": "group1", + "idPosition": "position1", "nik": "1111111", "name": "Amalia", "phone": "628980185458", "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 index 99cf39f..c388bfb 100644 --- a/src/module/seeder/data/user_role.json +++ b/src/module/seeder/data/user_role.json @@ -1,9 +1,4 @@ [ - { - "id": "dev", - "name": "Developer", - "desc": "-" - }, { "id": "supadmin", "name": "Super Admin", diff --git a/src/module/seeder/index.ts b/src/module/seeder/index.ts index 23a2f5c..6f7e816 100644 --- a/src/module/seeder/index.ts +++ b/src/module/seeder/index.ts @@ -1,4 +1,9 @@ +import seederAdminRole from "./data/admin_role.json"; +import seederAdmin from "./data/admin.json"; import seederUserRole from "./data/user_role.json"; import seederUser from "./data/user.json"; +import seederDesa from "./data/desa.json"; +import seederGroup from "./data/group.json"; +import seederPosition from "./data/position.json"; -export { seederUserRole, seederUser } \ No newline at end of file +export { seederAdminRole, seederAdmin, seederDesa, seederGroup, seederPosition, seederUserRole, seederUser, } \ No newline at end of file diff --git a/src/module/user/api/get/getAllUser.ts b/src/module/user/api/get/getAllUser.ts index e502c9c..29fd33b 100644 --- a/src/module/user/api/get/getAllUser.ts +++ b/src/module/user/api/get/getAllUser.ts @@ -14,9 +14,9 @@ export async function getAllUser(req: NextRequest) { where: { isActive: true, idUserRole: String(idUserRole), - idPosition: idPosition, - idVillage: idVillage, - idGroup: idGroup, + idPosition: String(idPosition), + idVillage: String(idVillage), + idGroup: String(idGroup), }, select: { id: true,