Pull Request branch dev-clone to main #1

Merged
gitea merged 429 commits from dev-clone into main 2024-12-23 09:31:34 +00:00
3 changed files with 346 additions and 0 deletions
Showing only changes of commit dd712ff061 - Show all commits

View File

@ -2,6 +2,8 @@ import db from ".";
import permissionSeeder from "./seeds/permissionSeeder"; import permissionSeeder from "./seeds/permissionSeeder";
import roleSeeder from "./seeds/rolesSeeder"; import roleSeeder from "./seeds/rolesSeeder";
import userSeeder from "./seeds/userSeeder"; import userSeeder from "./seeds/userSeeder";
import aspectsSeeder from "./seeds/aspectsSeeder";
import subAspectsSeeder from "./seeds/subAspectsSeeder";
(async () => { (async () => {
console.time("Done seeding"); console.time("Done seeding");
@ -9,6 +11,8 @@ import userSeeder from "./seeds/userSeeder";
await permissionSeeder(); await permissionSeeder();
await roleSeeder(); await roleSeeder();
await userSeeder(); await userSeeder();
await aspectsSeeder();
await subAspectsSeeder();
})().then(() => { })().then(() => {
console.log("\n"); console.log("\n");
console.timeEnd("Done seeding"); console.timeEnd("Done seeding");

View File

@ -0,0 +1,69 @@
import { aspects } from "../schema/aspects";
import db from "..";
import { eq } from "drizzle-orm";
const aspectsSeeder = async () => {
const aspectsData: (typeof aspects.$inferInsert)[] = [
{
name: "Tata Kelola",
createdAt: new Date(),
updatedAt: new Date(),
deletedAt: null,
},
{
name: "Identifikasi",
createdAt: new Date(),
updatedAt: new Date(),
deletedAt: null,
},
{
name: "Proteksi",
createdAt: new Date(),
updatedAt: new Date(),
deletedAt: null,
},
{
name: "Deteksi",
createdAt: new Date(),
updatedAt: new Date(),
deletedAt: null,
},
{
name: "Respon",
createdAt: new Date(),
updatedAt: new Date(),
deletedAt: null,
},
];
console.log("Seeding aspects...");
for (let aspect of aspectsData) {
// Check if the aspect already exists
const existingAspect = await db
.select()
.from(aspects)
.where(eq(aspects.name, aspect.name))
.limit(1);
if (existingAspect.length === 0) {
// If the aspect does not exist, insert it
const insertedAspect = (
await db
.insert(aspects)
.values(aspect)
.onConflictDoNothing()
.returning()
)[0];
if (insertedAspect) {
console.log(`Aspect ${aspect.name} created`);
}
} else {
console.log(`Aspect ${aspect.name} already exists`);
}
}
};
export default aspectsSeeder;

View File

@ -0,0 +1,273 @@
import { subAspects } from "../schema/subAspects";
import db from "..";
import { aspects } from "../schema/aspects";
import { eq, and } from "drizzle-orm";
const subAspectSeeder = async () => {
const subAspectsData: (typeof subAspects.$inferInsert & { aspectName: string })[] = [
/////// Aspect 1
{
name: "Kesadaran",
createdAt: new Date(),
updatedAt: new Date(),
deletedAt: null,
aspectName: "Tata Kelola",
},
{
name: "Audit",
createdAt: new Date(),
updatedAt: new Date(),
deletedAt: null,
aspectName: "Tata Kelola",
},
{
name: "Kontrol",
createdAt: new Date(),
updatedAt: new Date(),
deletedAt: null,
aspectName: "Tata Kelola",
},
{
name: "Pemenuhan",
createdAt: new Date(),
updatedAt: new Date(),
deletedAt: null,
aspectName: "Tata Kelola",
},
{
name: "Kebijakan",
createdAt: new Date(),
updatedAt: new Date(),
deletedAt: null,
aspectName: "Tata Kelola",
},
{
name: "Proses",
createdAt: new Date(),
updatedAt: new Date(),
deletedAt: null,
aspectName: "Tata Kelola",
},
/////// Aspect 2
{
name: "Manajemen Aset",
createdAt: new Date(),
updatedAt: new Date(),
deletedAt: null,
aspectName: "Identifikasi",
},
{
name: "Inventaris",
createdAt: new Date(),
updatedAt: new Date(),
deletedAt: null,
aspectName: "Identifikasi",
},
{
name: "Manajemen Risiko",
createdAt: new Date(),
updatedAt: new Date(),
deletedAt: null,
aspectName: "Identifikasi",
},
{
name: "Prioritas",
createdAt: new Date(),
updatedAt: new Date(),
deletedAt: null,
aspectName: "Identifikasi",
},
{
name: "Pelaporan",
createdAt: new Date(),
updatedAt: new Date(),
deletedAt: null,
aspectName: "Identifikasi",
},
{
name: "Klasifikasi",
createdAt: new Date(),
updatedAt: new Date(),
deletedAt: null,
aspectName: "Identifikasi",
},
/////// Aspect 3
{
name: "Jaringan",
createdAt: new Date(),
updatedAt: new Date(),
deletedAt: null,
aspectName: "Proteksi",
},
{
name: "Aplikasi",
createdAt: new Date(),
updatedAt: new Date(),
deletedAt: null,
aspectName: "Proteksi",
},
{
name: "Pengguna",
createdAt: new Date(),
updatedAt: new Date(),
deletedAt: null,
aspectName: "Proteksi",
},
{
name: "Manajemen Identitas dan Aset",
createdAt: new Date(),
updatedAt: new Date(),
deletedAt: null,
aspectName: "Proteksi",
},
{
name: "Cloud",
createdAt: new Date(),
updatedAt: new Date(),
deletedAt: null,
aspectName: "Proteksi",
},
{
name: "Data",
createdAt: new Date(),
updatedAt: new Date(),
deletedAt: null,
aspectName: "Proteksi",
},
/////// Aspect 4
{
name: "Perubahan",
createdAt: new Date(),
updatedAt: new Date(),
deletedAt: null,
aspectName: "Deteksi",
},
{
name: "Monitor",
createdAt: new Date(),
updatedAt: new Date(),
deletedAt: null,
aspectName: "Deteksi",
},
{
name: "Peringatan",
createdAt: new Date(),
updatedAt: new Date(),
deletedAt: null,
aspectName: "Deteksi",
},
{
name: "Pemberitahuan",
createdAt: new Date(),
updatedAt: new Date(),
deletedAt: null,
aspectName: "Deteksi",
},
{
name: "Intelijen",
createdAt: new Date(),
updatedAt: new Date(),
deletedAt: null,
aspectName: "Deteksi",
},
{
name: "Pelaporan",
createdAt: new Date(),
updatedAt: new Date(),
deletedAt: null,
aspectName: "Deteksi",
},
/////// Aspect 5
{
name: "Penahanan",
createdAt: new Date(),
updatedAt: new Date(),
deletedAt: null,
aspectName: "Respon",
},
{
name: "Penanggulangan",
createdAt: new Date(),
updatedAt: new Date(),
deletedAt: null,
aspectName: "Respon",
},
{
name: "Pemulihan",
createdAt: new Date(),
updatedAt: new Date(),
deletedAt: null,
aspectName: "Respon",
},
{
name: "Kegiatan Paska Insiden",
createdAt: new Date(),
updatedAt: new Date(),
deletedAt: null,
aspectName: "Respon",
},
{
name: "Pelaporan",
createdAt: new Date(),
updatedAt: new Date(),
deletedAt: null,
aspectName: "Respon",
},
];
console.log("Seeding subAspects...");
const memoizedAspectIds: Map<string, string> = new Map();
for (let subAspect of subAspectsData) {
// Check if aspect ID is already memoized
if (!memoizedAspectIds.has(subAspect.aspectName)) {
const aspect = (
await db
.select({ id: aspects.id })
.from(aspects)
.where(eq(aspects.name, subAspect.aspectName))
)[0];
if (!aspect) {
throw new Error(`Aspect ${subAspect.aspectName} does not exist in the database`);
}
memoizedAspectIds.set(subAspect.aspectName, aspect.id);
}
const aspectId = memoizedAspectIds.get(subAspect.aspectName)!;
// Check if the subAspect already exists
const existingSubAspect = await db
.select()
.from(subAspects)
.where(and(eq(subAspects.name, subAspect.name), eq(subAspects.aspectId, aspectId)))
.limit(1);
if (existingSubAspect.length === 0) {
// If the subAspect does not exist, insert it
const insertedSubAspect = (
await db
.insert(subAspects)
.values({
name: subAspect.name,
createdAt: subAspect.createdAt,
updatedAt: subAspect.updatedAt,
deletedAt: subAspect.deletedAt,
aspectId: aspectId
})
.onConflictDoNothing()
.returning()
)[0];
if (insertedSubAspect) {
console.log(`SubAspect ${subAspect.name} created and linked to aspect ${subAspect.aspectName}`);
}
} else {
console.log(`SubAspect ${subAspect.name} already exists`);
}
}
};
export default subAspectSeeder;