express-typeorm-rest-boilerplate
Version:
Boilerplate code to get started with building RESTful API Services
112 lines • 5.14 kB
JavaScript
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const express_1 = require("express");
const typedi_1 = require("typedi");
const celebrate_1 = require("celebrate");
const CompanyService_1 = __importDefault(require("../services/CompanyService"));
const Company_1 = require("../entities/Company");
const middlewares_1 = require("../middlewares");
const route = express_1.Router();
route.get('/', middlewares_1.isAuth, (req, res, next) => __awaiter(void 0, void 0, void 0, function* () {
const logger = typedi_1.Container.get('logger');
logger.debug('Calling GET to /company endpoint');
try {
const companyServiceInstance = typedi_1.Container.get(CompanyService_1.default);
const companies = yield companyServiceInstance.find();
return res.json(companies).status(200);
}
catch (e) {
return next(e);
}
}));
route.get('/:id', middlewares_1.isAuth, (req, res, next) => __awaiter(void 0, void 0, void 0, function* () {
const companyId = req.params.id;
const logger = typedi_1.Container.get('logger');
logger.debug('Calling GET to /company/:id endpoint with id: %s', companyId);
try {
const companyServiceInstance = typedi_1.Container.get(CompanyService_1.default);
const company = yield companyServiceInstance.findOne(companyId);
return res.json(company).status(200);
}
catch (e) {
return next(e);
}
}));
route.delete('/:id', middlewares_1.isAuth, middlewares_1.checkRole('staff'), (req, res, next) => __awaiter(void 0, void 0, void 0, function* () {
const companyId = req.params.id;
const logger = typedi_1.Container.get('logger');
logger.debug('Calling DELETE to /company/:id endpoint with id: %s', companyId);
try {
const companyServiceInstance = typedi_1.Container.get(CompanyService_1.default);
yield companyServiceInstance.delete(companyId);
return res.status(204).end();
}
catch (e) {
return next(e);
}
}));
route.post('/', middlewares_1.isAuth, middlewares_1.checkRole('staff'), celebrate_1.celebrate({
body: celebrate_1.Joi.object({
name: celebrate_1.Joi.string().required(),
description: celebrate_1.Joi.string().required(),
logo: celebrate_1.Joi.string().required(),
website: celebrate_1.Joi.string().required(),
headquarters: celebrate_1.Joi.object({
city: celebrate_1.Joi.string().required(),
country: celebrate_1.Joi.string().required(),
}).required(),
industry: celebrate_1.Joi.string().required(),
foundedYear: celebrate_1.Joi.string().required(),
}),
}), (req, res, next) => __awaiter(void 0, void 0, void 0, function* () {
const logger = typedi_1.Container.get('logger');
logger.debug('Calling POST to /company endpoint with body: %o', req.body);
try {
const companyServiceInstance = typedi_1.Container.get(CompanyService_1.default);
const company = yield companyServiceInstance.create(new Company_1.Company(req.body));
return res.status(201).json(company);
}
catch (e) {
return next(e);
}
}));
route.put('/:id', middlewares_1.isAuth, middlewares_1.checkRole('staff'), celebrate_1.celebrate({
body: celebrate_1.Joi.object({
name: celebrate_1.Joi.string(),
description: celebrate_1.Joi.string(),
logo: celebrate_1.Joi.string(),
website: celebrate_1.Joi.string(),
headquarters: celebrate_1.Joi.object({
city: celebrate_1.Joi.string().required(),
country: celebrate_1.Joi.string().required(),
}),
industry: celebrate_1.Joi.string(),
foundedYear: celebrate_1.Joi.string(),
}),
}), (req, res, next) => __awaiter(void 0, void 0, void 0, function* () {
const companyId = req.params.id;
const logger = typedi_1.Container.get('logger');
logger.debug('Calling PUT to /company/:id endpoint with body: %o', req.body);
try {
const companyServiceInstance = typedi_1.Container.get(CompanyService_1.default);
const company = yield companyServiceInstance.update(companyId, req.body);
return res.status(200).json(company);
}
catch (e) {
return next(e);
}
}));
exports.default = route;
//# sourceMappingURL=company.js.map