UNPKG

express-typeorm-rest-boilerplate

Version:

Boilerplate code to get started with building RESTful API Services

112 lines 5.14 kB
"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