UNPKG

lemoncloud-engine-js

Version:

lemoncloud.io - Lemon Engine Modle of Node for Robust Micro-service based on DynamoDB + ElastiCache + Elasticsearch.

1 lines 3.91 kB
"use strict";var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};exports=module.exports=function(e,t){if(!e)throw new Error("_$(global instance pool) is required!");e._;var m=e.U,f=e.log,y=(e.inf,e.err),h=m.NS("GRUP","yellow");function g(e){return E(404,e)}function b(e){return E(503,e)}function E(e,t){return{statusCode:e,headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Credentials":!0},body:JSON.stringify(t)}}function r(e,t,r){t.callbackWaitsForEmptyEventLoop=!1;var o=e.queryStringParameters||{},n=e.pathParameters||{},i=decodeURIComponent(n.type||""),u=decodeURIComponent(n.id||""),a=(u||"GET"!==e.httpMethod?e.httpMethod:"LIST")||"",s=decodeURIComponent(n.cmd||""),d=!a&&e.Records?"EVENT":{LIST:"LIST",GET:"GET",PUT:"PUT",POST:"POST",DELETE:"DELETE"}[a],c=e.body&&("string"==typeof e.body&&(e.body.startsWith("{")||e.body.startsWith("["))?JSON.parse(e.body):e.body)||e.Records&&{records:e.Records}||null;c||f(h,"#"+d+":"+s+" ("+a+", "+i+"/"+u+")...."),c&&f(h,"#"+d+":"+s+" ("+a+", "+i+"/"+u+").... body.len=",c?m.json(c).length:-1);var _={_id:u,_param:o,_body:c,_ctx:t},p=Promise.resolve(_),l=function(e,t,r){var o=null;switch(e){case"LIST":o=v;break;case"GET":o=T,"0"===t&&"self-test"===r&&(o=S);break;case"PUT":o=P;break;case"POST":o=I;break;case"DELETE":o=D}return o}(d,u,s);if(!l)return r(null,g({MODE:d}));try{p.then(function(e){var t=e._id,r=e._param,o=e._body,n=e._ctx;return l(t,r,o,n)}).then(function(e){return e&&"object"===(void 0===e?"undefined":_typeof(e))&&(e=m.cleanup(e)),r(null,function(e){return E(200,e)}(e)),!0}).catch(function(e){return y(h,"!!! callback@1 with err",e),0<=(e&&e.message||"").indexOf("404 NOT FOUND")?r(null,g(e.message)):r(null,b(e.message||e)),!1})}catch(e){r(e,b(e.message))}}r.do_list_group=v,r.do_get_group=T,r.do_put_group=P,r.do_post_group=I,r.do_delete_group=D;var n="group",i={id:"ID",parent:"Parent ID (상위 조직의 ID)",group:"Group ID (???)",name:"Name (그룹 고유 이름ID)",nick:"Show Name (표시할 이름)",message:"Short Description (그룹의 상태 표시 메세지)",description:"Long Description (그룹의 상세 내용)",image:"Image URL (대표 이미지)",state:"State (그룹 상태)",source:"Creator ID (생성자)",created_at:"Created Time",updated_at:"Updated Time"},u=require("./_meta-api")(e),a=function(o){o=o||{};var e=Object.keys(i).reduce(function(e,t,r){return void 0!==o[t]&&(e[t]=o[t]),e},{});return void 0!==o._id&&(e._id=o._id),e},s=function(e){return e.type=n,e},d=function(e){return void 0!==e.name&&(e.name=(""+e.name).trim()),u.do_chain_on_update_parent(e)},c=function(e){return u.do_chain_on_update_group(e)};function v(e,t,r,o){return f(h,"do_list_group("+e+")...."),(t=t||{}).type=n,u.do_list_meta(e,t).then(function(e){var t=e.list||[];return e.list=t.map(a),e})}function T(e,t,r,o){return f(h,"do_get_group("+e+")...."),(t=t||{}).type=n,u.do_get_meta(e,t).then(a)}function S(e,t,r,o){return f(h,"do_self_test_group("+e+")...."),(t=t||{}).type=n,u.do_self_test_meta(e,t)}function P(t,e,r,o){f(h,"do_put_group("+t+")....");var n=r||e;return n?(n._id=m.N(t,0),Promise.resolve(n).then(a).then(s).then(d).then(c).then(function(e){return u.do_put_meta(t,e)})):Promise.reject(new Error("node is required!"))}function I(t,e,r,o){if(f(h,"do_post_group("+t+")...."),"0"!==t&&0!==t)return Promise.reject(new Error("invalid ID:"+t));var n=r||e;return n?(t=m.N(t,0),Promise.resolve(n).then(a).then(s).then(d).then(c).then(function(e){return u.do_post_meta(t,e)}).then(a)):Promise.reject(new Error("node is required!"))}function D(t,e,r,o){f(h,"do_delete_group("+t+")....");var n=r||e;return n?(t=m.N(t,0),Promise.resolve(n).then(a).then(s).then(function(e){return u.do_delete_meta(t,e)})):Promise.reject(new Error("node is required!"))}return r};