refactor buildFunctionName

This commit is contained in:
2021-01-18 01:25:11 -07:00
parent 242e83f9b0
commit 3282d6c722

View File

@ -110,23 +110,23 @@ function insertMapperCode(view: EndpointDef, outDir: string): Promise<void> {
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);
}