flexbiz-server
Version:
Flexible Server
10 lines (9 loc) • 3.61 kB
JavaScript
const express=require("express"),app=express(),v8=require("v8"),{workerData}=require("worker_threads"),_=require("lodash"),Server=require("../app"),utils=require("../libs/utils"),handlers=require("../controllers/handlers"),controllerRPT=require("../controllers/controllerRPT"),{postToParent,onParentMessage}=require("./worker-utils"),handleReport=async $msg$$=>{if(!$msg$$.req||!$msg$$.req.handler)return postToParent({error:"Thi\u1ebfu bi\u1ebfn req"});try{let $ctrl$$=global.report_controllers[$msg$$.module];
$ctrl$$||(Logger.warn("[route] T\u1ea1o customize report...",$msg$$.module),$ctrl$$=new controllerRPT(null,$msg$$.module,async function($req$$,$callback$$){$callback$$(null,[])}));if($ctrl$$)if($msg$$.req.handler){const $action$$=handlers[$msg$$.req.handler];if($action$$)try{$action$$($ctrl$$,$msg$$.req,async($error$$,$result$$)=>{try{if($result$$&&($result$$.toObject&&($result$$=utils.convertObjectIdsToStrings($result$$.toObject())),_.isArray($result$$)&&($result$$=$result$$.map($r$$=>$r$$.toObject?
utils.convertObjectIdsToStrings($r$$.toObject()):$r$$)),!$result$$?.data||!Buffer.isBuffer($result$$?.data)))try{$result$$=structuredClone($result$$)}catch($e$$){$result$$=JSON.parse(JSON.stringify($result$$))}postToParent({error:$error$$?.message||$error$$?.error||$error$$,result:$result$$,id_task:$msg$$.id_task,code:$error$$?.code})}catch($e$$){Logger.error("[reportWorker] Error post mesage to parent report processs",{e:$e$$,result:$result$$,type:typeof $result$$}),postToParent({error:$e$$.message,
id_task:$msg$$.id_task})}})}catch($e$$){postToParent({error:$e$$.message,id_task:$msg$$.id_task})}else Logger.error("[reportWorker] not found handler",$msg$$.req.handler,". C\u00e1c handler c\u00f3 gi\u00e1 tr\u1ecb:",Object.keys(handlers).join(",")),postToParent({error:"Kh\u00f4ng t\u00ecm th\u1ea5y handler",id_task:$msg$$.id_task})}else postToParent({error:"Kh\u00f4ng t\u00ecm th\u1ea5y t\u00ean handler",id_task:$msg$$.id_task});else postToParent({error:"Kh\u00f4ng t\u00ecm th\u1ea5y module "+$msg$$.module,
id_task:$msg$$.id_task})}catch($e$$){postToParent({error:$e$$,id_task:$msg$$.id_task})}};let sv=!1;
const handleTask=$msg$$=>{if($msg$$){if(_.isString($msg$$))try{$msg$$=JSON.parse($msg$$)}catch($e$$){Logger.error($e$$);postToParent({error:"msg is not valid"});return}if(sv)handleReport($msg$$);else{if($msg$$.configs&&_.isString($msg$$.configs))try{$msg$$.configs=JSON.parse($msg$$.configs)}catch($e$$){delete $msg$$.configs,console.info($e$$)}const $configs$$=$msg$$.configs||require("../configs");$configs$$.use_ssl=!1;$configs$$.createIndexes=!1;$configs$$.port=1E4+$configs$$.port;Server(app,{configs:$configs$$,
createServer:!1,start_import_data_pool:!1,lite:!0},()=>{sv=!0;Logger.info("\ud83d\udd25 Report worker started:",$msg$$.id_worker);if($msg$$.load)return postToParent({rs:"ready",id_task:$msg$$.id_task});handleReport($msg$$)})}}else postToParent({error:"msg is not valid"})};onParentMessage($msg$$=>{handleTask($msg$$)});
if(workerData){let $initData$$=workerData;if(Buffer.isBuffer($initData$$)||$initData$$ instanceof Uint8Array)try{$initData$$=v8.deserialize($initData$$)}catch($e$$){Logger.error("[Worker] L\u1ed7i deserialize workerData:",$e$$),postToParent({error:"Init workerData failed: "+$e$$.message})}handleTask($initData$$)}process.on("uncaughtException",$err$$=>{$err$$.code==="EPIPE"?Logger.error("\u274c [reportworker] Caught EPIPE:",$err$$.message):Logger.error("\u274c [reportworker] Uncaught exception:",$err$$)});
process.on("unhandledRejection",$reason$$=>{Logger.error("\u274c [reportworker] Unhandled promise rejection:",$reason$$)});