UNPKG

lemon-engine

Version:

Lemon Engine Module to Synchronize Node over DynamoDB + ElastiCache + Elasticsearch by [lemoncloud](https://lemoncloud.io)

152 lines 6 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); var http_proxy_1 = __importDefault(require("./http-proxy")); var maker = function (_$, name, options) { name = name || 'MS'; var $U = _$.U; // re-use global instance (utils). if (!$U) throw new Error('$U is required!'); var NS = $U.NS(name, 'blue'); // NAMESPACE TO BE PRINTED. //! load common functions var _log = _$.log; var _inf = _$.inf; var _err = _$.err; /** **************************************************************************************************************** * Internal Proxy Function ** ****************************************************************************************************************/ var ENDPOINT = $U.env('MS_ENDPOINT', typeof options == 'string' ? options : ''); var $proxy = function () { if (!ENDPOINT) throw new Error('env:MS_ENDPOINT is required!'); var SVC = 'X' + name; var $SVC = _$(SVC, null); return $SVC ? $SVC : http_proxy_1.default(_$, SVC, ENDPOINT); // re-use proxy by name }; /** **************************************************************************************************************** * Main Implementation. ** ****************************************************************************************************************/ var thiz = new (/** @class */ (function () { function class_1() { this.name = function () { return "mysql-proxy:" + name; }; this.endpoint = function () { return ENDPOINT; }; } /** * Read last inserted id of type-name. * * @param type * @returns {Promise.<*>} */ class_1.prototype.do_get_last_id = function (type) { // _log(NS, `do_get_last_id(${type})...`); return $proxy() .do_get(type, '0', 'last-id') .then(function (_) { return _.result; }); }; /** * Get Next Generated ID (or Sequence) by type-name * * @param type * @returns {Promise.<*>} */ class_1.prototype.do_get_next_id = function (type) { // _log(NS, `do_get_next_id(${type})...`); return $proxy() .do_get(type, '0', 'next-id') .then(function (_) { return _.result; }); }; /** * Create Sequence Table with next-val * * @param type * @param nextval * @returns {Promise.<*>} */ class_1.prototype.do_create_id_seq = function (type, nextval) { var $param = nextval ? { next: nextval } : null; return $proxy() .do_get(type, '0', 'create-id', $param) .then(function (_) { return _.result; }); }; /** * Delete Sequence Table. * * @param type * @returns {Promise.<*>} */ class_1.prototype.do_delete_id_seq = function (type) { return $proxy() .do_get(type, '0', 'delete-id') .then(function (_) { return _.result; }); }; /** * Execute Query directly. * * @param query * @param values * @returns {*} */ class_1.prototype.do_promise_query = function (query, values) { if (!query) return Promise.reject(new Error(NS + 'parameter:query is required')); if (values && !Array.isArray(values)) return Promise.reject(new Error(NS + 'parameter:values should be array!')); //! prepare params var $param = { query: query, values: values }; return $proxy() .do_get('#', '0', 'query', $param) .then(function (_) { return _.result; }); }; /** * 해당 노드(여기서 노드는 하나의 인스턴스나 오브젝트)를 저장[업데이트(update) 또는 새로추가(insert)]한다 * - 노드를 해당 테이블에 저장한다. (by using Promise) * * @param table_name * @param node * @param $insert_set (optional) only if insert case. */ class_1.prototype.do_save_node = function (table_name, node, $insert_set) { //TODO - IMPLEMENT. return Promise.reject(new Error('404 NOT FOUND - NOT IMPLEMENTED!')); }; /** * save_node with history (by using Promise) * * @param table_name * @param node * @param hist_cols * @returns {null} */ class_1.prototype.do_save_node_hist = function (table_name, node, hist_cols) { //TODO - IMPLEMENT. return Promise.reject(new Error('404 NOT FOUND - NOT IMPLEMENTED!')); }; /** * Read Target Node information via MySQL. * * @param table_name target table-name. * @param node {id,...} * @returns {*} */ class_1.prototype.do_read_node = function (table_name, node) { //TODO - IMPLEMENT. return Promise.reject(new Error('404 NOT FOUND - NOT IMPLEMENTED!')); }; class_1.prototype.do_test_self = function (that) { that = that || {}; _log(NS, '- do_test_self()... param=', that); var $param = Object.assign({}, that || {}); // $param.$type = type; return $proxy() .do_get('#', '0', 'test-self', $param) .then(function (_) { return _.result; }); }; return class_1; }()))(); //! create & register service. return _$(name, thiz); }; exports.default = maker; //# sourceMappingURL=mysql-proxy.js.map