sequelize-ts-boilerplate
Version:
A REST API scaffolding tool designed to scale and easily generate CRUD endpoints based on database schema design
94 lines (85 loc) • 4.28 kB
text/typescript
import { Table } from "../../classes/Table";
import { IConfig } from "../../../interfaces/config";
import utils from "../../../utils/general-utils";
export function get(table: Table, config: IConfig) {
const pkLower = config.ORM_GENERATE.pkIdentifier;
const pkUpper = utils.capitalizeFirstLetter(pkLower);
const upperCaseTableName = utils.capitalizeFirstLetter(table.tableName);
const pluralizedLowerCaseTableName = utils.pluralize(table.tableName);
const pluralizedUpperCaseTableName = utils.capitalizeFirstLetter(utils.pluralize(upperCaseTableName));
return (`
// GET ALL
public getAll${pluralizedUpperCaseTableName} = async (req: Request, res: Response): Promise<any> => {
try {
const ${pluralizedLowerCaseTableName} = <${upperCaseTableName}[]>await this._${table.tableName}Service.findAll${pluralizedUpperCaseTableName}();
respond(res, { data: { ${pluralizedLowerCaseTableName} } });
} catch (err) {
console.log("err: ", err);
respond(res, { err });
}
}
// GET ALL BY PRIMARY KEY
public getAll${pluralizedUpperCaseTableName}By${pkUpper} = async (req: Request, res: Response): Promise<any> => {
try {
const ${table.tableName} = await this._${table.tableName}Service.findAll${pluralizedUpperCaseTableName}By${pkUpper}(req.params.${pkLower});
respond(res, { data: { ${table.tableName} } });
} catch (err) {
console.log("err: ", err);
respond(res, { err });
}
}
// GET ONE BY PRIMARY KEY
public get${upperCaseTableName}By${pkUpper} = async (req: Request, res: Response): Promise<any> => {
try {
const ${table.tableName} = await this._${table.tableName}Service.findOne${upperCaseTableName}By${pkUpper}(req.params.${pkLower});
respond(res, { data: { ${table.tableName} } });
} catch (err) {
console.log("err: ", err);
respond(res, { err });
}
}
// PUT
public update${upperCaseTableName} = async (req: Request, res: Response): Promise<any> => {
try {
const reqBody: {${table.tableName}: ${upperCaseTableName}} = req.body;
const updates: any = await this._${table.tableName}Service.update${upperCaseTableName}(reqBody.${table.tableName});
respond(res, { data: { updates } });
} catch (err) {
console.log("err: ", err);
respond(res, { err });
}
}
// POST ONE
public save${upperCaseTableName} = async (req: Request, res: Response): Promise<any> => {
try {
const reqBody: {${table.tableName}: ${upperCaseTableName}} = req.body;
const saved${upperCaseTableName}: ${upperCaseTableName} = <${upperCaseTableName}>await this._${table.tableName}Service.save${upperCaseTableName}(reqBody.${table.tableName});
respond(res, { data: { saved${upperCaseTableName} } });
} catch (err) {
console.log("err: ", err);
respond(res, { err });
}
}
// POST BATCH
public batchSave${pluralizedUpperCaseTableName} = async (req: Request, res: Response): Promise<any> => {
try {
const reqBody: {${pluralizedUpperCaseTableName}: ${upperCaseTableName}[]} = req.body;
const saved${pluralizedUpperCaseTableName}: any = await this._${table.tableName}Service.batchSave${pluralizedUpperCaseTableName}(reqBody.${pluralizedUpperCaseTableName});
respond(res, { data: { saved${pluralizedUpperCaseTableName} } });
} catch (err) {
console.log("err: ", err);
respond(res, { err });
}
}
// DELETE
public delete${upperCaseTableName}By${pkUpper} = async (req: Request, res: Response): Promise<any> => {
try {
const deletes: any = await this._${table.tableName}Service.delete${upperCaseTableName}By${pkUpper}(req.body.${pkLower} || req.params.${pkLower});
respond(res, { data: { deletes } });
} catch (err) {
console.log("err: ", err);
respond(res, { err });
}
}
`)
}