UNPKG

lemoncloud-engine-js

Version:

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

1 lines 4.06 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};module.exports=function(e,r,t){r=r||"IMS";var n=["id","type","parent","name","group","refid","stereo","size","description"],o=n.reduce(function(e,r){return(r=r||"").startsWith("desc")||e.push(r),e},[]),i=e.U,d=e.LEM;if(!i)throw new Error("$U is required!");if(!d)throw new Error("LEM is required!");var _=e.log,u=(e.inf,e.err,i.NS(r)),a=d(e,"_"+r,{ID_TYPE:"#ImageSeq",ID_NEXT:0,FIELDS:n,DYNA_TABLE:"Images",REDIS_PKEY:"CIMS",ES_INDEX:"images-v1",ES_TYPE:"image",ES_FIELDS:o,NS_NAME:r,ES_MASTER:1,CLONEABLE:!0,PARENT_IMUT:!0});if(!a)throw new Error(u+"$LEM is required!");function c(e){throw new Error("NOT_IMPLEMENTED - "+u+":"+JSON.stringify(e))}var s=t||{};s.$LEM=a,s.do_prepare=c,s.do_create=c,s.do_clone=c,s.do_update=c,s.do_increment=c,s.do_read=c,s.do_delete=c,s.do_destroy=c,s.do_search=c,s.on_records=c,s.do_notify=a.do_notify,s.do_subscribe=a.do_subscribe,s.do_initialize=c,s.do_terminate=c,s.do_test_self=c,e(r,s);function f(e,r,t){return a.do_prepare_chain(e,r,t)}function h(e){return a.do_finish_chain(e)}function p(t){var e=t._id;return _(u,"my_read_origin_node("+e+")...."),e?f(e,null,"read").then(a.do_read).then(function(e){var r=e._node;return t._node=r,t}).catch(function(e){if((e&&e.message||""+e).startsWith("404 NOT FOUND"))return t._node=null,t;throw e}):Promise.reject(new Error("ID is required!"))}function m(e){var r=e._id;return _(u,"my_validate_origin("+r+")...."),e._node?e:Promise.reject(new Error("404 NOT FOUND. ID:"+r))}function E(e){var r=e._id;_(u,"my_validate_deleted("+r+")....");var t=e._node||e;return _(u,"> node=",t),t.deleted_at?Promise.reject(new Error("404 NOT FOUND. deleted_at:"+t.deleted_at)):e}function l(e){var r=e._id;_(u,"my_filter_different("+r+")....");var n=e._node;return n&&Object.keys(e).reduce(function(e,r){if(r.startsWith("_")||r.startsWith("$"))return e;var t=n[r];return e[r]===t&&delete e[r],e},e),e}return s.do_create=function(e,r){var t=e&&"object"===(void 0===e?"undefined":_typeof(e))?e._id:e;return t?(_(u,"do_create()... id=",t),f(e,r,"create").then(p).then(function(e){var r=e._node;return!r||r.deleted_at?function(t){var e=t._id;return _(u,"my_prepare_origin_node("+e+")...."),e?f(e,null,"prepare").then(function(e){return e._force_create=!0,e}).then(a.do_prepare).then(function(e){var r=e._node;return t._node=r,t}):Promise.reject(new Error("ID is required!"))}(e):(e._is_update=!0,l(e))}).then(m).then(function(e){return e._is_update?a.do_update(e):a.do_create(e)}).then(h)):Promise.reject(new Error("id is required!"))},s.do_update=function(e,r){var t=e&&"object"===(void 0===e?"undefined":_typeof(e))?e._id:e;return t?(_(u,"do_update()... id=",t),f(e,r,"update").then(p).then(m).then(E).then(l).then(a.do_update).then(h)):Promise.reject(new Error("id is required!"))},s.do_increment=function(e,r){var t=e&&"object"===(void 0===e?"undefined":_typeof(e))?e._id:e;return t?(_(u,"do_increment()... id=",t),f(e,r,"increment").then(a.do_increment).then(h)):Promise.reject(new Error("id is required!"))},s.do_read=function(e,r){return(e&&"object"===(void 0===e?"undefined":_typeof(e))?e._id:e)?f(e,r,"read").then(a.do_read).then(E).then(h):Promise.reject(new Error("id is required!"))},s.do_delete=function(e,r){return(e&&"object"===(void 0===e?"undefined":_typeof(e))?e._id:e)?f(e,r,"delete").then(a.do_delete).then(h):Promise.reject(new Error("id is required!"))},s.do_search=function(e,r){var t=e&&"object"===(void 0===e?"undefined":_typeof(e))?e._id:e;return _(u,"do_search()... id=",t),f(e,r,"search").then(a.do_search).then(h)},s.on_records=function(e){return _(u,"on_records()... records.len=",e&&e.records&&e.records.length||0),a.on_records(e||{})},s.do_initialize=function(e){return _(u+"do_initialize()... params=",i.json(e)),a.do_initialize(e||{})},s.do_terminate=function(e){return _(u+"do_terminate()... params=",i.json(e)),a.do_terminate(e||{})},s};