lemon-engine
Version:
Lemon Engine Module to Synchronize Node over DynamoDB + ElastiCache + Elasticsearch by [lemoncloud](https://lemoncloud.io)
152 lines • 6 kB
JavaScript
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
;