lemoncloud-engine-js
Version:
lemoncloud.io - Lemon Engine Modle of Node for Robust Micro-service based on DynamoDB + ElastiCache + Elasticsearch.
144 lines (125 loc) • 5.54 kB
Markdown
by [lemoncloud](https://lemoncloud.io).
```bash
$ npm install lemoncloud-engine-js --save
$ npm update lemoncloud-engine-js --save
```
코드에서 사용 방법.
```js
//! define instance scope.
const $scope = 0 ? global : {
name : 'LEMON-MESSAGES' // name of scope
,env : process.env // environment setting (see below)
}
//! load engine with configuration.
const handler = require('lemoncloud-engine-js')($scope);
//! instance manager in scope of $scope
const _$ = handler._$;
//! common user handler.
const user = handler.user;
const group = handler.group;
const chat = handler.chat;
// data properties.
const FIELDS = [
'id', 'type', 'parent', 'name', 'message'
];
const ES_FIELDS = FIELDS;
//! create engine for Messages.
const $LEM = _$.LEM(_$, '_'+name, {
ID_TYPE : 'LemonMessagesSeq', // WARN! '#' means no auto-generated id.
ID_NEXT : 1000, // ID Starts
FIELDS : FIELDS, // Properties
DYNA_TABLE : 'Messages', // DynamoDB Table
REDIS_PKEY : 'CMMS', // REDIS PKEY
ES_INDEX : 'messages-v1', // ES Index Name
ES_TYPE : 'messages', // ES Type Name
ES_FIELDS : ES_FIELDS,
NS_NAME : name, // Notify Service Name. (null means no notifications)
ES_MASTER : 1, // ES Master NODE.
ES_VERSION : 6, // ES Version 6.x.
CLONEABLE : true, // 복제 가능하며, parent/cloned 필드를 지원함.
PARENT_IMUT : false, // parent-id 변경 가능함(2018.03.15)
XECURE_KEY : 'lemon', // Encryption Key (use '*' prefix at property name: ver 0.3.22)
}); // load core-service with parameters.
if (!$LEM) throw new Error(NS+'$LEM is required!');
```
`$scope.env` 에는 아래와 같이 **backbone** 의 엔드포인트 주소가 필요. (자세한 내용은 [lemoncloud-backbone-js]()참고)
```yml
MS_ENDPOINT: 'http://localhost:8081/mysql'
DS_ENDPOINT: 'http://localhost:8081/dynamo'
ES_ENDPOINT: 'http://localhost:8081/elastic'
RS_ENDPOINT: 'http://localhost:8081/redis'
SS_ENDPOINT: 'http://localhost:8081/sqs'
SN_ENDPOINT: 'http://localhost:8081/sns'
WS_ENDPOINT: 'http://localhost:8081/web'
```
----------------
| Version | Description
|-- |--
| 1.0.23 | add `agw-proxy` as `AG`. @190509.
| 1.0.22 | improve log
| 1.0.21 | `environ.TS` for time-stamp.
| 1.0.20 | add $exist for elasticsearch to check existing field
| 1.0.19 | add do_queue_protocol in protocol-proxy
| 1.0.18 | add highlight $H for elasicsearch
| 1.0.17 | add 'qs_parse', 'qs_stringify' in utility
| 1.0.16 | `cron-proxy` support `Rules` in CloudWatch.
| 1.0.15 | reserved search param page/ipp.
| 1.0.14 | impromve ES6 index initializer. see `do_initialize()`
| 1.0.13 | support callback(url) as `$protocol().do_post_notify_protocol(url, body, callback)` vis SNS.
| 1.0.12 | bug: _current_time error in records
| 1.0.11 | bug: save when 404 NOT FOUND
| 1.0.10 | improve validate_properties.
| 1.0.9 | `ES_TIMESERIES` - onRecords, do not update cache if timeseries.
| 1.0.8 | `ES_TIMESERIES` to support Time-Series Data (ex: item-trace)
| 1.0.6 | hot-fix of iota.
| 1.0.5 | use elasticsearch as 1st cache. see `REDIS_PKEY = '#'`.
| 1.0.4 | optimized 'do_readX' for xecured property.
| 1.0.3 | add 'do_post_execute_notify'
| 1.0.2 | `do_saveES()` direct save into ES.
| 1.0.1 | updated package dependencies
| 1.0.0 | support in-memory cache for node transaction.
| 0.3.25 | `s3-proxy` support `tags` for S3 Tagging.
| 0.3.24 | add `s3-proxy` as `S3`. @180913.
| 0.3.23 | cognito: `do_get_confirm_user()`. @180911.
| 0.3.22 | support xecured fields see `XECURE_KEY`. @180801.
| 0.3.21 | add 'do_post_execute_protocol'
| 0.3.20 | try to parse body for `http-proxy`.
| 0.3.19 | get stringified param and body for `protocol-proxy`.
| 0.3.18 | add `protocol-proxy`.
| 0.3.17 | optimize `http-proxy`.
| 0.3.16 | optimize log msg.
| 0.3.15 | add ses-proxy as `SE`.
| 0.3.14 | add sqs stat as `$SS.do_statistics()`.
| 0.3.13 | lambda-proxy as 'LS'. set `LS_ENDPOINT`.
| 0.3.12 | optimize 404 error message.
| 0.3.11 | allow ipp to be set 0.
| 0.3.10 | sns-proxy as 'SN'
| 0.3.9 | support ES6 with `ES_VERSION = 6`.
| 0.3.8 | minor fix for log of redis:my_save_node
| 0.3.7 | mysql id-generator configuration (see `$LEM.do_next_id()`).
| 0.3.6 | fix ElasticSearch create index error due to 'string'.
| 0.3.5 | support as `_$.httpProxy(_$, name, uri)`.
| 0.3.4 | fix require error.
| 0.3.3 | add httpProxy service. (use `_$.createHttpProxy(name, endpoint)`)
| 0.3.2 | cognito service - manager user/group.
| 0.3.1 | remove MMS,user,group service. and add cognito service.
| 0.2.13 | cognito-proxy as 'CS'
| 0.2.12 | try to create node in dynamo if error of "an attribute that does not exist in the item"
| 0.2.5 | web-proxy as 'WS'
| 0.2.4 | record event handler
| 0.2.3 | sqs-proxy as 'SS'
| 0.2.0 | support scope during initialize
Common LEMON Engine Module