upd: update struktur database

Deskripsi:
- update struktur database
- tambah table admin dan role admin
- update seeder

No Issues
This commit is contained in:
amel
2024-07-31 21:21:02 +08:00
parent 89281f286d
commit bef4b6b63a
11 changed files with 207 additions and 37 deletions

View File

@@ -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

View File

@@ -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 () => {

View File

@@ -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"
}
]

View File

@@ -0,0 +1,10 @@
[
{
"id": "dev",
"name": "Developer"
},
{
"id": "admin",
"name": "Admin"
}
]

View File

@@ -0,0 +1,7 @@
[
{
"id": "desa1",
"name": "Darmasaba",
"desc": "-"
}
]

View File

@@ -0,0 +1,7 @@
[
{
"id": "group1",
"idVillage": "desa1",
"name": "Dinas"
}
]

View File

@@ -0,0 +1,7 @@
[
{
"id": "position1",
"idGroup": "group1",
"name": "Perbekel"
}
]

View File

@@ -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"
}
]

View File

@@ -1,9 +1,4 @@
[
{
"id": "dev",
"name": "Developer",
"desc": "-"
},
{
"id": "supadmin",
"name": "Super Admin",

View File

@@ -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 }
export { seederAdminRole, seederAdmin, seederDesa, seederGroup, seederPosition, seederUserRole, seederUser, }

View File

@@ -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,