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
JavaScript
;
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