From 3282d6c7228a4048b4769a0e3cb068e9ae910955 Mon Sep 17 00:00:00 2001 From: Mason Payne Date: Mon, 18 Jan 2021 01:25:11 -0700 Subject: [PATCH] refactor buildFunctionName --- src/views/views-creator.ts | 61 ++++++++++++++------------------------ 1 file changed, 22 insertions(+), 39 deletions(-) diff --git a/src/views/views-creator.ts b/src/views/views-creator.ts index 400280c..12d2f28 100644 --- a/src/views/views-creator.ts +++ b/src/views/views-creator.ts @@ -110,23 +110,23 @@ function insertMapperCode(view: EndpointDef, outDir: string): Promise { function createMapperFunc(view: EndpointDef): string { let func: string = ''; let funcName: string = ''; - if (view.type.indexOf('list') !== -1 || view.type.indexOf('count') !== -1) { + if (view.type === 'list' || view.type === 'count') { func = buildGetList(view); - } else if (view.type.indexOf('item') !== -1) { - funcName = `get${uppercaseFirstLetter(view.component)}`; - } else if (view.type.indexOf('update') !== -1) { - funcName = `update${uppercaseFirstLetter(view.component)}`; - } else if (view.type.indexOf('create') !== -1) { + } else if (view.type === 'item') { + funcName = buildFunctionName(view); + } else if (view.type === 'update') { + funcName = buildFunctionName(view); + } else if (view.type === 'create') { func = buildCreateFunc(view); - } else if (view.type.indexOf('delete') !== -1) { - funcName = `delete${uppercaseFirstLetter(view.component)}`; + } else if (view.type === 'delete') { + funcName = buildFunctionName(view); } return func; } function buildCreateFunc(view: EndpointDef): string { let func: string = ''; - let funcName = `create${uppercaseFirstLetter(view.component)}`; + let funcName = buildFunctionName(view); let query: string = `INSERT INTO ${view.table} SET `; let requiredQueryValues: string = ''; let optionalValuesCode: string = ''; @@ -176,7 +176,7 @@ function buildGetList(view: EndpointDef): string { let query: string = ''; let tables: string = view.join?.length ? buildJoin(view) : `${view.table}`; let filters: string = ''; - funcName = `get${pluralize(uppercaseFirstLetter(view.component))}` + (view.type === 'count' ? 'Count' : ''); + funcName = buildFunctionName(view); let requiredFilterStrings = []; let requiredQueryValues = ''; @@ -266,35 +266,6 @@ function buildOrderBy(view: EndpointDef): string { return orderBy; } -function tableHasColumn(tableName: string, column: string, sysDef: SystemDef): boolean { - let answer: boolean = false; - for (let i in sysDef.storage.tables) { - let table: TableDef = sysDef.storage.tables[i]; - if (table.name === tableName) { - for (let j in table.columns) { - let c: ColumnDef = table.columns[j]; - if (column === c.name) { - answer = true; - break; - } - } - if (!answer && table.relations.length) { - for (let k in table.columns) { - let r: BelongsToDef = table.relations[k]; - if (column === `${r.table}_id`) { - answer = true; - break; - } - } - } - } - if (answer) { - break; - } - } - return answer; -} - function uppercaseFirstLetter(input: string) { return input.charAt(0).toUpperCase() + input.slice(1); @@ -304,3 +275,15 @@ function lowercaseFirstLetter(input: string) { return input.charAt(0).toLowerCase() + input.slice(1); } + +function buildFunctionName(view: EndpointDef): string { + let selector: {[type: string]: (view: EndpointDef) => string} = { + 'list': (view: EndpointDef) => `get${pluralize(uppercaseFirstLetter(view.component))}` + (view.type === 'count' ? 'Count' : ''), + 'count': (view: EndpointDef) => `get${pluralize(uppercaseFirstLetter(view.component))}` + (view.type === 'count' ? 'Count' : ''), + 'item': (view: EndpointDef) => `get${uppercaseFirstLetter(view.component)}`, + 'update': (view: EndpointDef) => `update${uppercaseFirstLetter(view.component)}`, + 'create': (view: EndpointDef) => `create${uppercaseFirstLetter(view.component)}`, + 'delete': (view: EndpointDef) => `delete${uppercaseFirstLetter(view.component)}`, + }; + return selector[view.type](view); +} \ No newline at end of file