From 5f0e5b3d547e48dbe34b95d020d7820bad1ac4ba Mon Sep 17 00:00:00 2001 From: Stuart Long Chay Boon Date: Mon, 24 Oct 2022 21:25:25 +0800 Subject: [PATCH] [offers][fix] integrate random name generator to profile seeding --- apps/portal/prisma/readSheet.ts | 7 +++- .../src/utils/offers/randomNameGenerator.ts | 33 +++++++++++++++++++ 2 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 apps/portal/src/utils/offers/randomNameGenerator.ts diff --git a/apps/portal/prisma/readSheet.ts b/apps/portal/prisma/readSheet.ts index 067c3d3f..5b286816 100644 --- a/apps/portal/prisma/readSheet.ts +++ b/apps/portal/prisma/readSheet.ts @@ -4,6 +4,7 @@ import crypto from 'crypto'; import { baseCurrencyString } from '../src/utils/offers/currency'; import { convert } from '../src/utils/offers/currency/currencyExchange'; import { generateAnalysis } from '../src/utils/offers/analysisGeneration'; +import generateRandomName from '../src/utils/offers/randomNameGenerator'; const prisma = new PrismaClient(); @@ -68,11 +69,15 @@ const seedSalaries = async () => { .createHash('sha256') .update(xlSerialToJsDate(data.Timestamp).toString()) .digest('hex'); + + // Generate random name until unique + let uniqueName: string = await generateRandomName(); + if (data.Type.toUpperCase() === 'INTERNSHIP') { // create profile const dataAdded = await prisma.offersProfile.create({ data: { - profileName: crypto.randomUUID().substring(0, 10), + profileName: uniqueName, createdAt: xlSerialToJsDate(data.Timestamp), editToken: token, background: { diff --git a/apps/portal/src/utils/offers/randomNameGenerator.ts b/apps/portal/src/utils/offers/randomNameGenerator.ts new file mode 100644 index 00000000..ff02e503 --- /dev/null +++ b/apps/portal/src/utils/offers/randomNameGenerator.ts @@ -0,0 +1,33 @@ +import type { Config } from 'unique-names-generator'; +import { adjectives, animals,colors, uniqueNamesGenerator } from 'unique-names-generator'; +import { PrismaClient } from '@prisma/client'; + +const prisma = new PrismaClient() + +const customConfig: Config = { + dictionaries: [adjectives, colors, animals], + length: 3, + separator: '-', +}; + + +export default async function generateRandomName(): Promise { + let uniqueName: string = uniqueNamesGenerator(customConfig); + + let sameNameProfiles = await prisma.offersProfile.findMany({ + where: { + profileName: uniqueName + } + }) + + while (sameNameProfiles.length !== 0) { + uniqueName = uniqueNamesGenerator(customConfig); + sameNameProfiles = await prisma.offersProfile.findMany({ + where: { + profileName: uniqueName + } + }) + } + + return uniqueName +} \ No newline at end of file