import { EducationType } from "@/education/education.types";
import { DocumentBuilder } from "@nestjs/swagger";
import { RedocOptions } from "@juicyllama/nestjs-redoc";
import educationDataset from "@/education/education.dataset";
const formatEducation = (education: EducationType) => {
const period = `${formatDate(education.startDate)} - ${
education.endDate ? formatDate(education.endDate) : "present"
}`;
const institute = education.url
? `${education.institute}`
: education.institute;
const description = education.description.split("\n").join("
");
return `${institute}, ${education.city}
${education.level} - ${education.course}
${description}
`;
};
const formatDate = (date: Date, locale: string | string[] = "en-GB"): string => {
const dateFormatter = new Intl.DateTimeFormat(locale, {
dateStyle: "long",
});
const dateParts = dateFormatter.formatToParts(date).reduce>(
(result, datePart: Intl.DateTimeFormatPart) => {
if (datePart.type !== "literal") {
result[datePart.type] = datePart.value;
}
return result;
},
{ day: "", month: "", year: "" }
);
return `${dateParts.month} ${dateParts.year}`;
};
export const addEducation = (
document: DocumentBuilder,
count: number = 5,
redocOptions: RedocOptions
): DocumentBuilder => {
let educationTagGroup = redocOptions.tagGroups.find((tagGroup) => tagGroup.name === "Education");
if (!educationTagGroup) {
educationTagGroup = {
name: "Education",
tags: [],
};
redocOptions.tagGroups.push(educationTagGroup);
}
educationDataset
.getData()
.slice(0, count)
.forEach((education) => {
educationTagGroup.tags.push(education.institute);
document.addTag(education.institute, formatEducation(education));
});
educationTagGroup.tags.push("Education");
document.addTag("Education", "For my complete education, take a look at the GetEducation API endpoint.");
return document;
};