UNPKG

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
# lemoncloud-engine-js Common LEMON Engine Module by [lemoncloud](https://lemoncloud.io). # Usage ```bash # install module $ npm install lemoncloud-engine-js --save # update module $ 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!'); ``` ### 환경변수(env) `$scope.env` 에는 아래와 같이 **backbone** 의 엔드포인트 주소가 필요. (자세한 내용은 [lemoncloud-backbone-js]()참고) ```yml # MySQL backbone api MS_ENDPOINT: 'http://localhost:8081/mysql' # DynamoDB backbone api DS_ENDPOINT: 'http://localhost:8081/dynamo' # ElasticSearch backbone api ES_ENDPOINT: 'http://localhost:8081/elastic' # Redis backbone api RS_ENDPOINT: 'http://localhost:8081/redis' # SQS backbone api SS_ENDPOINT: 'http://localhost:8081/sqs' # SNS backbone api SN_ENDPOINT: 'http://localhost:8081/sns' # Web backbone api WS_ENDPOINT: 'http://localhost:8081/web' ``` ---------------- # VERSION INFO # | 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