UNPKG

@tasolutions/express-core

Version:
94 lines (77 loc) 4.46 kB
'use strict'; const { applicationName } = require('../config'); const _ = require('lodash'); const { apiConfigService } = require('../clients/configService'); const redisService = require('../redis'); module.exports = { throwError: (layer, class_name, function_name, case_name, messageTemplate, status = 400, variable = {}) => { const type = 'ERROR'; apiConfigService.send(layer, class_name, function_name, case_name, messageTemplate, status, type); const key = `${applicationName}:${type}_${layer}_${class_name}_${function_name}_${case_name}_${status}`.toUpperCase().replace(/ /g, '_'); const response_message_template = { layer, class_name, function_name, case_name: case_name, type, message: messageTemplate, status }; const template = _.template(messageTemplate); let message = messageTemplate; try { message = template(variable); } catch (err) { message = messageTemplate; } throw { key, message, response_message_template }; }, messageError: async (layer, class_name, function_name, case_name, messageTemplate, status = 400, variable = {}, acceptLanguage = 'en') => { const type = 'ERROR'; apiConfigService.send(layer, class_name, function_name, case_name, messageTemplate, status, type); const key = `${applicationName}:${type}_${layer}_${class_name}_${function_name}_${case_name}_${status}`.toUpperCase().replace(/ /g, '_'); const response_message_template = { layer, class_name, function_name, case_name: case_name, type, message: messageTemplate, status }; // Kiểm tra cache trước const cachedMessage = await redisService.get(key); if (cachedMessage) { messageTemplate = cachedMessage[acceptLanguage] || cachedMessage['default'] || messageTemplate; } else { try { const resConfig = await apiConfigService.get(key, acceptLanguage); messageTemplate = resConfig ? resConfig : messageTemplate; // Cập nhật messageTemplate nếu có dữ liệu từ API // Lưu vào cache await redisService.set(key, { ...cachedMessage, ...resConfig }); // Cập nhật thông điệp vào cache } catch (err) { console.log('[messageError][resConfig]', err.message); // Ghi log lỗi } } const template = _.template(messageTemplate); let message = messageTemplate; try { message = template(variable); } catch (err) { message = messageTemplate; // Trả về thông điệp gốc nếu có lỗi } return { key, message, response_message_template }; }, messageSuccess: async (layer, class_name, function_name, case_name, messageTemplate, status = 400, variable = {}, acceptLanguage = 'en') => { const type = 'SUCCESS'; apiConfigService.send(layer, class_name, function_name, case_name, messageTemplate, status, type); const key = `${applicationName}:${type}_${layer}_${class_name}_${function_name}_${case_name}_${status}`.toUpperCase().replace(/ /g, '_'); const response_message_template = { layer, class_name, function_name, case_name: case_name, type, message: messageTemplate, status }; // Kiểm tra cache trước const cachedMessage = await redisService.get(key); if (cachedMessage) { messageTemplate = cachedMessage[acceptLanguage] || cachedMessage['default'] || messageTemplate; } else { try { const resConfig = await apiConfigService.get(key, acceptLanguage); messageTemplate = resConfig ? resConfig : messageTemplate; // Cập nhật messageTemplate nếu có dữ liệu từ API // Lưu vào cache await redisService.set(key, { ...cachedMessage, ...resConfig }); // Cập nhật thông điệp vào cache } catch (err) { console.log('[messageSuccess][resConfig]', err.message); // Ghi log lỗi } } const template = _.template(messageTemplate); let message = messageTemplate; try { message = template(variable); } catch (err) { message = messageTemplate; // Trả về thông điệp gốc nếu có lỗi } return { key, message, response_message_template }; }, };