aws-lambda-template-generator
Version:
AWS Lambda template generator
57 lines (47 loc) • 1.75 kB
JavaScript
;
class TemplateDataProcessor {
constructor(templateData) {
this.templateData = templateData;
}
getUrl(languageId, templateId, frameworkId) {
const languageFiltered = this.templateData.filter(data => data.languageId === languageId);
const templateFiltered = languageFiltered[0]
// template has a composit primary key with templateId and frameworkId
.templates.filter(data => data.templateId === templateId
&& data.framework.frameworkId === frameworkId);
return templateFiltered[0].url;
}
getExamples(languageId, frameworkId) {
// bug in this logic....
const languageFileterd = this.templateData.filter(data => data.languageId === languageId);
return languageFileterd[0].templates.filter(data => data.framework.frameworkId === frameworkId);
}
getFrameworks(languageId) {
const frameworkArray = [];
const languageFiltered = this.templateData.filter(data => data.languageId === languageId);
languageFiltered[0].templates.forEach((data) => {
frameworkArray.push({
frameworkId: data.framework.frameworkId,
frameworkName: data.framework.frameworkName
});
});
return this._removeDuplicates(frameworkArray, 'frameworkId');;
}
getLanguages() {
const languageArray = [];
this.templateData.forEach((data) => {
languageArray.push({
languageId: data.languageId,
language: data.language
});
});
return this._removeDuplicates(languageArray, 'languageId');
}
_removeDuplicates(myArr, prop) {
return myArr.filter((obj, pos, arr) => {
return arr.map(mapObj => mapObj[prop]).indexOf(obj[prop]) === pos;
});
}
}
module.exports = TemplateDataProcessor;