[offers][chore] Set job title in seeding

pull/501/head
Bryann Yeap Kok Keong 3 years ago committed by Stuart Long Chay Boon
parent 5f0e5b3d54
commit ac9e0293bd

@ -4,7 +4,10 @@ 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';
import {
generateRandomName,
generateRandomStringForToken,
} from '../src/utils/offers/randomGenerator';
const prisma = new PrismaClient();
@ -45,6 +48,35 @@ function generateSpecialization() {
return specializations[Math.floor(Math.random() * 300) % 3];
}
const getJobTitle = (role: string) => {
const processedRole = role.toUpperCase().trim();
if (processedRole.includes('ML ENGINEER')) {
return 'ai-ml-engineer';
} else if (processedRole.includes('BACKEND')) {
return 'back-end-engineer';
} else if (processedRole.includes('DATA')) {
return 'data-engineer';
} else if (processedRole.includes('DEVOPS')) {
return 'devops-engineer';
} else if (processedRole.includes('ENTERPRISE')) {
return 'enterprise-engineer';
} else if (processedRole.includes('RESEARCH')) {
return 'research-engineer';
} else if (
processedRole.includes('CYBER') ||
processedRole.includes('SECURITY')
) {
return 'security-engineer';
} else if (processedRole.includes('QA')) {
return 'test-engineer';
} else if (processedRole.includes('SYSTEM')) {
return 'systems-engineer';
} else {
return 'software-engineer'; // Assume default SWE
}
};
const createdProfileIds: Array<string> = [];
const seedSalaries = async () => {
@ -58,21 +90,23 @@ const seedSalaries = async () => {
//seed here
return await Promise.all(
data.map(async (data: ExcelData) => {
// only add swe roles
if (data.Role.toUpperCase() === 'SOFTWARE ENGINEER') {
if (data.Income && typeof data.Income === 'number') {
// Generate random name until unique
let uniqueName: string = await generateRandomName();
const jobTitle = getJobTitle(data.Role);
// check if we have company id
// console.log(data.Income)
// console.log()
if (companyIdMappings[data.Company]) {
const token = crypto
.createHash('sha256')
.update(xlSerialToJsDate(data.Timestamp).toString())
.update(
xlSerialToJsDate(data.Timestamp).toString() +
generateRandomStringForToken(),
)
.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({
@ -116,7 +150,7 @@ const seedSalaries = async () => {
startYear: xlSerialToJsDate(
data.Timestamp,
).getFullYear(),
title: data.Role, // TODO: check about this
title: jobTitle,
},
},
},
@ -130,7 +164,7 @@ const seedSalaries = async () => {
// assume rest full time
const dataAdded = await prisma.offersProfile.create({
data: {
profileName: crypto.randomUUID().substring(0, 10),
profileName: uniqueName,
createdAt: xlSerialToJsDate(data.Timestamp),
editToken: token,
background: {
@ -206,7 +240,7 @@ const seedSalaries = async () => {
: 0,
},
},
title: data.Role, // TODO: check about this
title: jobTitle,
totalCompensation: {
create: {
baseCurrency: baseCurrencyString,
@ -242,7 +276,6 @@ const seedSalaries = async () => {
} else {
console.log('Invalid Income not a number: ' + data.Income);
}
}
}),
);
};
@ -250,7 +283,7 @@ const seedSalaries = async () => {
const generateAllAnalysis = async () => {
return await Promise.all(
createdProfileIds.map(async (profileId) => {
const analysis = await generateAnalysis({
await generateAnalysis({
ctx: { prisma, session: null },
input: { profileId },
});

Loading…
Cancel
Save