lemoncloud-engine-js
Version:
lemoncloud.io - Lemon Engine Modle of Node for Robust Micro-service based on DynamoDB + ElastiCache + Elasticsearch.
1 lines • 5.24 kB
JavaScript
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,r){if(!e)throw new Error("_$(global instance pool) is required!");e._;var _=e.U,l=e.log,m=(e.inf,e.err),E=_.NS("META","yellow"),d=e.MMS;function g(e){return b(404,e)}function v(e){return b(503,e)}function b(e,r){return{statusCode:e,headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Credentials":!0},body:JSON.stringify(r)}}function t(e,r,t){r.callbackWaitsForEmptyEventLoop=!1;var n=e.queryStringParameters||{},o=e.pathParameters||{},i=decodeURIComponent(o.type||""),d=decodeURIComponent(o.id||""),a=(d||"GET"!==e.httpMethod?e.httpMethod:"LIST")||"",s=decodeURIComponent(o.cmd||""),u=!a&&e.Records?"EVENT":{LIST:"LIST",GET:"GET",PUT:"PUT",POST:"POST",DELETE:"DELETE"}[a],p=e.body&&("string"==typeof e.body&&(e.body.startsWith("{")||e.body.startsWith("["))?JSON.parse(e.body):e.body)||e.Records&&{records:e.Records}||null;p||l(E,"#"+u+":"+s+" ("+a+", "+i+"/"+d+")...."),p&&l(E,"#"+u+":"+s+" ("+a+", "+i+"/"+d+").... body.len=",p?_.json(p).length:-1);var c={_id:d,_param:n,_body:p,_ctx:r},f=Promise.resolve(c),y=function(e,r,t){var n=null;switch(e){case"LIST?":n=T;break;case"GET":n=P,"self-test"===t&&(n=h);break;case"PUT":case"POST":case"DELETE":break;case"EVENT":n=j}return n}(u,0,s);if(!y)return t(null,g({MODE:u}));try{f.then(function(e){var r=e._id,t=e._param,n=e._body,o=e._ctx;return y(r,t,n,o)}).then(function(e){return e&&"object"===(void 0===e?"undefined":_typeof(e))&&(e=_.cleanup(e)),t(null,function(e){return b(200,e)}(e)),!0}).catch(function(e){return m(E,"!!! callback@1 with err",e),0<=(e&&e.message||"").indexOf("404 NOT FOUND")?t(null,g(e.message)):t(null,v(e.message||e)),!1})}catch(e){t(e,v(e.message))}}t.do_list_meta=T,t.do_get_meta=P,t.do_put_meta=function(n,e,r,t){var o=Object.assign({},r||e);if(!o.type)return Promise.reject(new Error("type is required!"));var i=o.type;return delete o.type,d.do_read(n,o).then(function(e){var r=e._node||{},t=e.deleted_at||r.deleted_at||0;return t?Promise.reject(new Error("404 NOT FOUND: Node deleted_at="+t)):r.type&&r.type!=i?Promise.reject(new Error("404 NOT FOUND: Invalid Type="+r.type)):(l(E,"> update =",o),d.do_update(n,o))})},t.do_post_meta=function(e,r,t,n){if(0!==e)return Promise.reject(new Error("invalid id:"+e));var o=Object.assign({},t||r);return o.type?d.do_create_safe(e,o):Promise.reject(new Error("type is required!"))},t.do_delete_meta=function(r,e,t,n){if("number"!=typeof r)return Promise.reject(new Error("invalid id:"+r));var o=Object.assign({},t||e);if(!o.type)return Promise.reject(new Error("type is required!"));var i=o.type;return delete o.type,d.do_read(r,o).then(function(t){var e=t._node||{};return t.deleted_at||e.deleted_at?t:e.type&&e.type!=i?Promise.reject(new Error("404 NOT FOUND: Invalid Type="+e.type)):d.do_delete(r,o).then(function(e){var r=(e._node||e).deleted_at||0;return t.deleted_at=r,t})})},t.do_self_test_meta=h;t.do_chain_on_update_parent=function(r){if(!r.type)return Promise.reject(new Error("type is required!"));var t=r.type;if(void 0!==r.parent){var n=(""+r.parent).trim();if(n&&"0"!==n){if("string"!=typeof r.parent)return d.do_read(n).then(function(e){return l(E,"> set parent-id :=",e.id,"<- pid:"+n),r.parent=e.id,e.type!==t?Promise.reject(new Error("parent.type is different. type:"+e.type)):r.parent==r.id||r.parent==r._id?Promise.reject(new Error("parent-id is same as id")):r});var o={type:t,name:r.parent};return o.refid=d.calculate_refid(o),d.do_search_refid(o).then(function(e){return l(E,"> set parent-id :=",e.id,"<- ref:"+o.refid),r.parent=e.id,r.parent==r.id||r.parent==r._id?Promise.reject(new Error("parent is same as id")):r})}r.parent=0}return r};t.do_chain_on_update_group=function(r){if(void 0!==r.group){var t=(""+r.group).trim();if(t&&"0"!==t&&""!==t){if("string"!=typeof r.group)return d.do_read(t).then(function(e){return l(E,"> set group-id :=",e.id,"<- gid:"+t),r.group=e.id,"group"!==e.type?Promise.reject(new Error("group.type is different. type:"+e.type)):r.group==r.id||r.group==r._id?Promise.reject(new Error("group-id is same as id")):r});var n={type:"group",name:t};return n.refid=d.calculate_refid(n),d.do_search_refid(n).then(function(e){return l(E,"> set group-id :=",e.id,"<- refid:",n.refid),r.group=e.id,r})}r.group=0}return r};function h(e,r,t,n){l(E,"do_self_test_meta("+e+")....");var o=Object.assign({},t||{});return o.id=_.N(e,0),Promise.resolve(o).then(function(e){return d.do_test_self(e,r)})}function T(e,r,t,n){var o=Object.assign({},t||r);return o.type?d.do_search(e,o):Promise.reject(new Error("type is required!"))}function P(e,r,t,n){var o=Object.assign({},t||r);if(!o.type)return Promise.reject(new Error("type is required!"));var i=o.type;return delete o.type,d.do_read(e,o).then(function(e){var r=e._node||{},t=e.deleted_at||r.deleted_at||0;return t?Promise.reject(new Error("404 NOT FOUND: Node deleted_at="+t)):r.type&&r.type!=i?Promise.reject(new Error("404 NOT FOUND: Invalid Type="+r.type)):e})}function j(e,r,t,n){return l(E,"do_event_records("+e+")...."),d.on_records(t)}return t};
;