UNPKG

newmax-utils

Version:
72 lines (71 loc) 3.03 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.serviceInvoker = void 0; const ApiError_1 = require("./ApiError"); const Winston_1 = require("./libs/Winston"); const env_1 = require("./configs/env"); const winston_config_1 = require("./configs/winston.config"); const Sequelize_1 = require("./utils/Sequelize"); const parseQuery_1 = require("./utils/parseQuery"); async function serviceInvoker(req, res, callback, schemaName, options) { const headers = req.headers || {}; // const Logger = new Winston_1.Winston({ schema: schemaName }); const logger = Logger.createInstance({ fn: callback?.name ?? 'unnamed', console: { disable: (options?.skipConsole || !!headers['skip-console']) ?? false }, telegram: { disable: (options?.skipTelegram || !!headers['skip-telegram']) ?? false }, }); const profiler = logger.startTimer(); const profilerMeta = { port: env_1.env.PORT, env: env_1.env.NODE_ENV, fn: callback?.name ?? 'unnamed', schema: schemaName, service: env_1.env.SERVICE_NAME || 'common', }; logger.info('Service has been started'); try { req.query = (0, parseQuery_1.parseQuery)(req.query); const data = await callback(req.body, req.query); profiler.done({ level: winston_config_1.winstonConfig.levelsEnums.done, message: 'Service completed success', ...profilerMeta, }); if (data.error) { return res ? res.status(data.error.status).send({ error: data.error, payload: null }) : { error: data.error, payload: null }; } return res ? res.send(data) : { status: 200 }; } catch (error) { const result = { payload: null, error }; const profilerData = { error, level: winston_config_1.winstonConfig.levelsEnums.error, message: 'Service completed with error: ', ...profilerMeta, }; if (error instanceof ApiError_1.ApiError) { profiler.done({ ...profilerData, message: profilerData.message + error.error.message }); result.error = error.error; return res ? res.status(error.error.statusCode).send(result) : { status: error.error.statusCode }; } if (error instanceof Sequelize_1.SequelizeError) { profiler.done({ ...profilerData, message: profilerData.message + error.message }); return res ? res.status(error.status).send(result) : { status: error.status }; } // Показываем в консоль, если ошибка из-за чепятки if (error instanceof Error) { console.log(error); result.error = { status: 400, message: error.message }; return res ? res.status(400).send(result) : { status: 400 }; } return String(error); } } exports.serviceInvoker = serviceInvoker;