From e305d955f164eb42a76f3f734f69a19177abfe8c Mon Sep 17 00:00:00 2001 From: Rafi Arrafif Date: Thu, 29 Jan 2026 02:10:01 +0700 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20fix:=20move=20prisma=20id=20gene?= =?UTF-8?q?rator=20to=20service=20and=20repo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- prisma/seed/userRole.seed.ts | 5 ++++- prisma/seed/userSystem.seed.ts | 2 ++ src/helpers/databases/createManyWithUUID.ts | 8 ++++++++ src/modules/internal/services/bulkInsertAnime.service.ts | 2 ++ .../services/internal/bulkInsertCharWithVA.service.ts | 3 +++ .../services/internal/bulkInsertStaffOrPeople.service.ts | 2 ++ 6 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 src/helpers/databases/createManyWithUUID.ts diff --git a/prisma/seed/userRole.seed.ts b/prisma/seed/userRole.seed.ts index b797361..44eb100 100644 --- a/prisma/seed/userRole.seed.ts +++ b/prisma/seed/userRole.seed.ts @@ -1,8 +1,10 @@ +import { generateUUIDv7 } from "../../src/helpers/databases/uuidv7"; import { prisma } from "../../src/utils/databases/prisma/connection"; export const userRoleSeed = async (systemId: string) => { const roles = [ { + id: generateUUIDv7(), name: "ADMIN", description: "Administrator with full access", isSuperadmin: true, @@ -19,6 +21,7 @@ export const userRoleSeed = async (systemId: string) => { createdBy: systemId, }, { + id: generateUUIDv7(), name: "USER", description: "Regular user with limited access", isSuperadmin: false, @@ -40,7 +43,7 @@ export const userRoleSeed = async (systemId: string) => { roles.map((role) => prisma.userRole.upsert({ where: { name: role.name }, - update: {}, + update: role, create: role, }), ), diff --git a/prisma/seed/userSystem.seed.ts b/prisma/seed/userSystem.seed.ts index ed129d4..8bcc43f 100644 --- a/prisma/seed/userSystem.seed.ts +++ b/prisma/seed/userSystem.seed.ts @@ -1,7 +1,9 @@ +import { generateUUIDv7 } from "../../src/helpers/databases/uuidv7"; import { prisma } from "../../src/utils/databases/prisma/connection"; export const userSystemSeed = async () => { const payload = { + id: generateUUIDv7(), name: "SYSTEM", username: process.env.DEFAULT_ADMIN_USERNAME || "system", email: process.env.DEFAULT_ADMIN_EMAIL || "system@example.com", diff --git a/src/helpers/databases/createManyWithUUID.ts b/src/helpers/databases/createManyWithUUID.ts new file mode 100644 index 0000000..a2da1b8 --- /dev/null +++ b/src/helpers/databases/createManyWithUUID.ts @@ -0,0 +1,8 @@ +import { generateUUIDv7 } from "./uuidv7"; + +function createManyWithUUID(items: T[]): T[] { + return items.map((i) => ({ + ...i, + id: i.id ?? generateUUIDv7(), + })); +} diff --git a/src/modules/internal/services/bulkInsertAnime.service.ts b/src/modules/internal/services/bulkInsertAnime.service.ts index 531802e..99f5ea4 100644 --- a/src/modules/internal/services/bulkInsertAnime.service.ts +++ b/src/modules/internal/services/bulkInsertAnime.service.ts @@ -7,6 +7,7 @@ import { bulkInsertStudiosRepository } from "../repositories/bulkInsertStudios.r import { MediaFullInfoResponse } from "../types/mediaFullInfo.type"; import { generateSlug } from "../../../helpers/characters/generateSlug"; import { bulkInsertCharWithVAService } from "./internal/bulkInsertCharWithVA.service"; +import { generateUUIDv7 } from "../../../helpers/databases/uuidv7"; export const bulkInsertAnimeService = async (malId: number) => { try { @@ -20,6 +21,7 @@ export const bulkInsertAnimeService = async (malId: number) => { const insertedCharacters = await bulkInsertCharWithVAService(malId); const constructMediaPayload: Prisma.MediaUpsertArgs["create"] = { + id: generateUUIDv7(), title: mediaFullInfo.data.title, titleAlternative: (mediaFullInfo.data .titles as unknown) as Prisma.InputJsonValue, diff --git a/src/modules/internal/services/internal/bulkInsertCharWithVA.service.ts b/src/modules/internal/services/internal/bulkInsertCharWithVA.service.ts index bd9d2e0..9917d58 100644 --- a/src/modules/internal/services/internal/bulkInsertCharWithVA.service.ts +++ b/src/modules/internal/services/internal/bulkInsertCharWithVA.service.ts @@ -1,5 +1,6 @@ import { SystemAccountId } from "../../../../config/account/system"; import { getContentReferenceAPI } from "../../../../config/apis/media.reference"; +import { generateUUIDv7 } from "../../../../helpers/databases/uuidv7"; import { ErrorForwarder } from "../../../../helpers/error/instances/forwarder"; import { bulkInsertCharactersRepository } from "../../repositories/bulkInsertCharacters.repository"; import { bulkInsertLangVARepository } from "../../repositories/bulkInsertLangVA.repository"; @@ -17,6 +18,7 @@ export const bulkInsertCharWithVAService = async (malId: number) => { for (const charEntry of charactersWithVAData.data) { // Insert character if not exists const characterInsertedId = await bulkInsertCharactersRepository({ + id: generateUUIDv7(), malId: charEntry.character.mal_id, name: charEntry.character.name, role: charEntry.role, @@ -41,6 +43,7 @@ export const bulkInsertCharWithVAService = async (malId: number) => { // Link character with inserted VAs for (const langVA of insertedVAs) { await bulkInsertLangVARepository({ + id: generateUUIDv7(), language: langVA.lang, vaId: langVA.staffId, charId: characterInsertedId.id, diff --git a/src/modules/internal/services/internal/bulkInsertStaffOrPeople.service.ts b/src/modules/internal/services/internal/bulkInsertStaffOrPeople.service.ts index 0f6ef4c..1be39eb 100644 --- a/src/modules/internal/services/internal/bulkInsertStaffOrPeople.service.ts +++ b/src/modules/internal/services/internal/bulkInsertStaffOrPeople.service.ts @@ -1,4 +1,5 @@ import { SystemAccountId } from "../../../../config/account/system"; +import { generateUUIDv7 } from "../../../../helpers/databases/uuidv7"; import { ErrorForwarder } from "../../../../helpers/error/instances/forwarder"; import { bulkInsertVoiceActorRepository } from "../../repositories/bulkInsertVoiceActor.repository"; import { Person } from "../../types/mediaCharWithVAInfo"; @@ -6,6 +7,7 @@ import { Person } from "../../types/mediaCharWithVAInfo"; export const bulkInsertStaffOrPeopleService = async (peopleData: Person) => { try { return await bulkInsertVoiceActorRepository({ + id: generateUUIDv7(), malId: peopleData.mal_id, name: peopleData.name, imageUrl: peopleData.images.jpg.image_url,