Files
sistem-desa-mandiri/prisma/seed.ts
2026-02-24 15:32:36 +08:00

413 lines
10 KiB
TypeScript

import { seederAdmin, seederAdminRole, seederAnnouncement, seederAnnouncementMember, seederDesa, seederDiscussion, seederDiscussionMember, seederDivision, seederDivisionMember, seederGroup, seederPosition, seederProject, seederProjectMember, seederProjectTask, seederSetting, seederTheme, seederUser, seederUserRole } from '@/module/seeder';
import { PrismaClient } from '@prisma/client';
const prisma = new PrismaClient()
// DATA YG DI SEEDER MERUPAKAN DATA REAL(DARMASABA) & DATA DUMMY (MANDALA)
// DATA JSON GABUNGAN (REAL & DUMMY) ADALAH adminRole, admin, theme, desa, group, position, user, userRole, user, dan setting
// Selain table yg disebutkan, data lainnya merupakan data dummy
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
},
})
}
// THEME
for (let data of seederTheme) {
await prisma.colorTheme.upsert({
where: {
id: data.id
},
update: {
name: data.name,
utama: data.utama,
bgUtama: data.bgUtama,
bgIcon: data.bgIcon,
bgFiturHome: data.bgFiturHome,
bgFiturDivision: data.bgFiturDivisi,
bgTotalKegiatan: data.bgTotalKegiatan
},
create: {
id: data.id,
name: data.name,
utama: data.utama,
bgUtama: data.bgUtama,
bgIcon: data.bgIcon,
bgFiturHome: data.bgFiturHome,
bgFiturDivision: data.bgFiturDivisi,
bgTotalKegiatan: data.bgTotalKegiatan
}
})
}
// DESA
for (let data of seederDesa) {
await prisma.village.upsert({
where: {
id: data.id
},
update: {
name: data.name,
desc: data.desc,
idTheme: "theme1"
},
create: {
id: data.id,
name: data.name,
desc: data.desc,
idTheme: "theme1"
}
})
}
// 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({
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: {
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,
phone: data.phone,
email: data.email,
gender: data.gender
},
})
}
// DISCUSSION
for (let data of seederDiscussion) {
await prisma.discussion.upsert({
where: {
id: data.id
},
update: {
idVillage: data.idVillage,
idGroup: data.idGroup,
title: data.title,
desc: data.desc,
status: data.status,
createdBy: data.createdBy
},
create: {
id: data.id,
idVillage: data.idVillage,
idGroup: data.idGroup,
title: data.title,
desc: data.desc,
status: data.status,
createdBy: data.createdBy
},
})
}
// DISSCUSSION MEMBER
for (let data of seederDiscussionMember) {
await prisma.discussionMember.upsert({
where: {
id: data.id
},
update: {
idDiscussion: data.idDiscussion,
idUser: data.idUser
},
create: {
id: data.id,
idDiscussion: data.idDiscussion,
idUser: data.idUser
},
})
}
// PROJECT
for (let data of seederProject) {
await prisma.project.upsert({
where: {
id: data.id
},
update: {
idVillage: data.idVillage,
idGroup: data.idGroup,
title: data.title,
desc: data.desc,
status: data.status,
createdBy: data.createdBy
},
create: {
id: data.id,
idVillage: data.idVillage,
idGroup: data.idGroup,
title: data.title,
desc: data.desc,
status: data.status,
createdBy: data.createdBy
},
})
}
// PROJECT MEMBER
for (let data of seederProjectMember) {
await prisma.projectMember.upsert({
where: {
id: data.id
},
update: {
idProject: data.idProject,
idUser: data.idUser,
isLeader: data.isLeader
},
create: {
id: data.id,
idProject: data.idProject,
idUser: data.idUser,
isLeader: data.isLeader
},
})
}
// PROJECT TASK
for (let data of seederProjectTask) {
await prisma.projectTask.upsert({
where: {
id: data.id
},
update: {
idProject: data.idProject,
title: data.title,
desc: data.desc,
status: data.status,
dateStart: new Date(data.dateStart),
dateEnd: new Date(data.dateEnd)
},
create: {
id: data.id,
idProject: data.idProject,
title: data.title,
desc: data.desc,
status: data.status,
dateStart: new Date(data.dateStart),
dateEnd: new Date(data.dateEnd)
},
})
}
// DIVISION
for (let data of seederDivision) {
await prisma.division.upsert({
where: {
id: data.id
},
update: {
name: data.name,
desc: data.desc,
createdBy: data.createdBy
},
create: {
id: data.id,
idVillage: data.idVillage,
idGroup: data.idGroup,
name: data.name,
desc: data.desc,
createdBy: data.createdBy,
isActive: true
}
})
}
// DIVISION MEMBER
for (let data of seederDivisionMember) {
await prisma.divisionMember.upsert({
where: {
id: data.id
},
update: {
idUser: data.idUser,
isAdmin: data.isAdmin,
isLeader: data.isLeader
},
create: {
id: data.id,
idDivision: data.idDivision,
idUser: data.idUser,
isAdmin: data.isAdmin,
isLeader: data.isLeader,
isActive: true
}
})
}
// ANNOUNCEMENT
for (let data of seederAnnouncement) {
await prisma.announcement.upsert({
where: {
id: data.id
},
update: {
title: data.title,
desc: data.desc,
createdBy: data.createdBy
},
create: {
id: data.id,
idVillage: data.idVillage,
title: data.title,
desc: data.desc,
createdBy: data.createdBy,
isActive: true
}
})
}
// ANNOUNCEMENT MEMBER
for (let data of seederAnnouncementMember) {
await prisma.announcementMember.upsert({
where: {
id: data.id
},
update: {
idAnnouncement: data.idAnnouncement,
idGroup: data.idGroup,
idDivision: data.idDivision
},
create: {
id: data.id,
idAnnouncement: data.idAnnouncement,
idGroup: data.idGroup,
idDivision: data.idDivision,
isActive: true
}
})
}
// SETTING
for (let data of seederSetting) {
await prisma.setting.upsert({
where: {
id: data.id
},
update: {
name: data.name,
},
create: {
id: data.id,
name: data.name,
value: data.value
}
})
}
}
main().then(async () => {
await prisma.$disconnect()
}).catch(async (e) => {
console.error(e)
await prisma.$disconnect()
process.exit(1)
})