UNPKG

sequelize-ts-boilerplate

Version:

A REST API scaffolding tool designed to scale and easily generate CRUD endpoints based on database schema design

55 lines (46 loc) 2.58 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const general_utils_1 = require("../../utils/general-utils"); function get(table, config) { const pkLower = config.ORM_GENERATE.pkIdentifier; const pkUpper = general_utils_1.default.capitalizeFirstLetter(pkLower); const upperCaseTableName = general_utils_1.default.capitalizeFirstLetter(table.tableName); const lowerCaseTableName = general_utils_1.default.lowerCaseFirstLetter(table.tableName); const pluralizedUpperCaseTableName = general_utils_1.default.capitalizeFirstLetter(general_utils_1.default.pluralize(upperCaseTableName)); const opts = `raw: true`; return (` public findAll${pluralizedUpperCaseTableName} = async () => { return await ${upperCaseTableName}.findAll({${opts}}); } public findAll${pluralizedUpperCaseTableName}By${pkUpper} = async (${pkLower}: number) => { return await ${upperCaseTableName}.findAll({where: {${pkLower}}, ${opts}}); } public findOne${upperCaseTableName}By${pkUpper} = async (${pkLower}: number) => { return await ${upperCaseTableName}.findOne({where: {${pkLower}}, ${opts}}); } public update${upperCaseTableName} = async (${lowerCaseTableName}) => { return await ${upperCaseTableName}.update({...${lowerCaseTableName}}, {where: {${pkLower}: ${lowerCaseTableName}['${pkLower}']}}); } public save${upperCaseTableName} = async (${lowerCaseTableName}) => { return await new ${upperCaseTableName}({...${lowerCaseTableName}}).save(); } public batchSave${pluralizedUpperCaseTableName} = async (${pluralizedUpperCaseTableName.toLowerCase()}: ${upperCaseTableName}[]) => { return await ${upperCaseTableName}.bulkCreate(${pluralizedUpperCaseTableName.toLowerCase()}.map((x) => { // do work here return { // customize obj props, if necessary ...x }; })) } public delete${upperCaseTableName}By${pkUpper} = async (${pkLower}: number) => { return await ${upperCaseTableName}.destroy({where: {${pkLower}}}); } /************************** Methods not attached to 'Controller' below here ******************************/ public findAll${pluralizedUpperCaseTableName}ByColumns = async (columns: {[key:string]: any}) => { return await ${upperCaseTableName}.findAll({where: {...columns}, ${opts}}); } `); } exports.get = get; //# sourceMappingURL=write-service-methods.js.map