flexbiz-server
Version:
Flexible Server
18 lines (17 loc) • 8.09 kB
JavaScript
const handlers=require("../../controllers/handlers"),crypto=require("crypto"),async=require("async");
async function dataHandler($flowState_query$$,$node$$,$payload$$,$abortSignal_code$$){var $listInfo_nodeInstanceId$$=`${$flowState_query$$.instanceId}-${$node$$.id}`;if($abortSignal_code$$.aborted)throw Logger.info(`[${$listInfo_nodeInstanceId$$}] data node aborted before logging.`),new DOMException("Aborted by signal","AbortError");$abortSignal_code$$=$node$$.data?.code;if(!$abortSignal_code$$)throw"Ch\u01b0a cung c\u1ea5p m\u00e3 ch\u1ee9ng t\u1eeb ho\u1eb7c danh m\u1ee5c";$listInfo_nodeInstanceId$$=
await global.getModel("listinfo").findOne({code:$abortSignal_code$$});if(!$listInfo_nodeInstanceId$$)throw"M\u00e3 ch\u1ee9ng t\u1eeb/danh m\u1ee5c kh\u00f4ng t\u1ed3n t\u1ea1i";let $ctrl$$=global.controllers[($listInfo_nodeInstanceId$$.api_code||$abortSignal_code$$).toUpperCase()];if(!$ctrl$$)throw"Ch\u1ee9ng t\u1eeb/danh m\u1ee5c ch\u01b0a \u0111\u01b0\u1ee3c kh\u1edfi t\u1ea1o";const $id_app$$=$flowState_query$$.flowDefinition.id_app,$email_created$$=$flowState_query$$.flowDefinition.user_created,
$app_info$$=await global.getModel("app").findOne({_id:$id_app$$}).lean();if(!$app_info$$)throw"C\u00f4ng ty kh\u00f4ng t\u1ed3n t\u1ea1i";const $action$$=$node$$?.data?.action;switch($action$$){case "create":return new Promise(($resolve$$,$reject$$)=>{let $datas$$=$payload$$?.data||$payload$$||[];Array.isArray($datas$$)||($datas$$=[$datas$$]);$datas$$=$datas$$.filter($d$$=>typeof $d$$=="object");$datas$$=$datas$$.length>0?$datas$$.map($d$$=>({...($node$$?.data?.data||{}),...$d$$})):[$node$$?.data?.data||
{}];async.map($datas$$,($_req_data$$,$callback$$)=>{let $req$$={user:{email:$email_created$$,current_app_info:$app_info$$,current_id_app:$id_app$$},query:{id_app:$id_app$$},body:$_req_data$$,params:{},headers:{}};const {query:$query$$,user:$user$$,params:$params$$,files:$files$$,body:$body$$}=$req$$;try{$_req_data$$={handler:"createHandler",query:$query$$,data:$body$$,user:$user$$,params:$params$$,user_agent:"flow",ip:"",files:$files$$,originalUrl:""},global.inputMainPool?global.inputMainPool.exec({req:$_req_data$$,
module:$ctrl$$.name.toUpperCase(),configs:JSON.stringify(configs)},$obj_created_response$$=>{if($obj_created_response$$.error)return $callback$$({error:$obj_created_response$$.error.error||$obj_created_response$$.error.message||$obj_created_response$$.error,message:$obj_created_response$$.message||$obj_created_response$$.error.error||$obj_created_response$$.error.message||$obj_created_response$$.error});({obj_created:$obj_created_response$$}=$obj_created_response$$.result);$ctrl$$.pushNotification($obj_created_response$$,
"new",null,null,{exclude_token:($req$$.query||{}).access_token});$callback$$(null,$obj_created_response$$)}):handlers.createHandler($ctrl$$,$_req_data$$,($e_obj_created$$,$returnvalue$$)=>{if($e_obj_created$$)return $callback$$($e_obj_created$$);({obj_created:$e_obj_created$$}=$returnvalue$$);$ctrl$$.pushNotification($e_obj_created$$,"new",null,null,{exclude_token:($req$$.query||{}).access_token});$callback$$(null,$e_obj_created$$)})}catch($e$$){$callback$$($e$$)}},($e$$,$rs$$)=>{if($e$$)return $reject$$($e$$);
Array.isArray($payload$$?.data)?$resolve$$($rs$$):$resolve$$($rs$$.length==1?$rs$$[0]:$rs$$)})});case "findAndUpdate":case "update":return new Promise(($resolve$$,$reject$$)=>(async()=>{let $datas$$;if($action$$=="findAndUpdate"){let {condition:$condition$$,data:$data$$}=$payload$$||{};if(!$condition$$||!$data$$)return $reject$$("Payload c\u1ea7n c\u00f3 condition v\u00e0 data");$condition$$.id_app=$id_app$$;$datas$$=await $ctrl$$.model.find($condition$$).lean()}else $datas$$=$payload$$?.data||$payload$$||
[];Array.isArray($datas$$)||($datas$$=[$datas$$]);$datas$$=$datas$$.filter($d$$=>typeof $d$$=="object");$datas$$=$datas$$.length>0?$datas$$.map($d$$=>({...($node$$?.data?.data||{}),...$d$$})):[$node$$?.data?.data||{}];async.map($datas$$,($data$$,$callback$$)=>{const $id$$=$data$$._id;if(!$id$$)return Logger.error("[dataNode] thi\u1ebfu _id trong data c\u1ea7n c\u1eadp nh\u1eadt",JSON.stringify($data$$,null,2)),$callback$$("Thi\u1ebfu _id trong d\u1eef li\u1ec7u c\u1ea7n c\u1eadp nh\u1eadt");let $req$$=
{user:{email:$email_created$$,current_app_info:$app_info$$,current_id_app:$id_app$$},query:{id_app:$id_app$$},body:$data$$,params:{},headers:{}};const {query:$query$$,user:$user$$,params:$params$$,files:$files$$,body:$body$$}=$req$$;try{const $_req$$={handler:"updateHandler",query:$query$$,_action:"update",id:$id$$,data:$data$$,body:$body$$,user:$user$$,params:$params$$,user_agent:"flow",ip:"",files:$files$$,originalUrl:$req$$.originalUrl};global.inputMainPool?global.inputMainPool.exec({req:$_req$$,
module:$ctrl$$.name.toUpperCase(),configs:JSON.stringify(configs)},$response$$=>{if($response$$.error)return $callback$$({error:$response$$.error.error||$response$$.error.message||$response$$.error,message:$response$$.message||$response$$.error.error||$response$$.error.message||$response$$.error});let {new_obj:$new_obj$$,old_obj:$old_obj$$}=$response$$.result;$ctrl$$.pushNotification($new_obj$$,"update",$old_obj$$,null,{exclude_token:$req$$.query.access_token});$callback$$(null,$new_obj$$)}):handlers.updateHandler($ctrl$$,
$_req$$,($e$$,$returnvalue$$)=>{if($e$$)return $callback$$({error:$e$$.error||$e$$.message||$e$$});let {new_obj:$new_obj$$,old_obj:$old_obj$$}=$returnvalue$$;$ctrl$$.pushNotification($new_obj$$,"update",$old_obj$$,null,{exclude_token:$req$$.query.access_token});$callback$$(null,$new_obj$$)})}catch($e$$){$callback$$($e$$)}},($e$$,$rs$$)=>{if($e$$)return $reject$$($e$$);Array.isArray($payload$$?.data)?$resolve$$($rs$$):$resolve$$($rs$$.length==1?$rs$$[0]:$rs$$)})})());case "count":case "list":let $condition$$=
{...($payload$$?.condition||$payload$$||{})};$node$$?.data?.handle_condition_script&&($condition$$=(new Function("payload","condition",$node$$?.data?.handle_condition_script))($payload$$,$condition$$));$condition$$.id_app=$id_app$$;$flowState_query$$=$payload$$?.query||{};$action$$=="count"&&($flowState_query$$.count=1);let $req$$={user:{email:$email_created$$,current_app_info:$app_info$$,current_id_app:$id_app$$},query:{q:$condition$$,type_data:"json_export",...$flowState_query$$},body:{},params:{},
headers:{}};return new Promise(($resolve$$,$reject$$)=>{const {query:$query$$,body:$body$$,user:$user$$,params:$params$$}=$req$$;try{const $_req$$={handler:"findHandler",query:$query$$,body:$body$$,user:$user$$,params:$params$$,user_agent:"flow",ip:""};if(global.inputMainPool){const $id_task$$=`task-find-${crypto.randomBytes(20).toString("hex")}`;global.inputMainPool.exec({id_task:$id_task$$,req:$_req$$,module:$ctrl$$.name.toUpperCase(),configs:JSON.stringify(configs)},$data$jscomp$3_response$$=>
{$data$jscomp$3_response$$.error?$reject$$({error:$data$jscomp$3_response$$.error.error||$data$jscomp$3_response$$.error.message||$data$jscomp$3_response$$.error,message:$data$jscomp$3_response$$.message||$data$jscomp$3_response$$.error.error||$data$jscomp$3_response$$.error.message||$data$jscomp$3_response$$.error}):($data$jscomp$3_response$$=($data$jscomp$3_response$$.result||{}).result||$data$jscomp$3_response$$.result,$node$$?.data?.handle_data_script&&($data$jscomp$3_response$$=(new Function("payload",
"condition","data",$node$$?.data?.handle_data_script))($payload$$,$condition$$,$data$jscomp$3_response$$)),$action$$=="count"&&($data$jscomp$3_response$$.condition=$condition$$),$resolve$$($data$jscomp$3_response$$))})}else handlers.findHandler($ctrl$$,$_req$$,($data$jscomp$4_e$$,$returnvalue$$)=>{if($data$jscomp$4_e$$)return $reject$$($data$jscomp$4_e$$);$data$jscomp$4_e$$=$returnvalue$$.result||$returnvalue$$;$node$$?.data?.handle_data_script&&($data$jscomp$4_e$$=(new Function("payload","condition",
"data",$node$$?.data?.handle_data_script))($payload$$,$condition$$,$data$jscomp$4_e$$));$action$$=="count"&&($data$jscomp$4_e$$.condition=$condition$$);$resolve$$($data$jscomp$4_e$$)})}catch($e$$){$reject$$($e$$)}});default:throw"Action kh\u00f4ng h\u1ee3p l\u1ec7";}}module.exports=dataHandler;