/
service.js
102 lines (81 loc) · 2.99 KB
/
service.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
'use strict';
const winston = require('winston');
const commons = require('@jtviegas/jscommons').commons;
const ServerError = require('@jtviegas/jscommons').ServerError;
const store = require('@jtviegas/dyndbstore');
const service_module = (config) => {
const logger = winston.createLogger(commons.getDefaultWinstonConfig());
logger.info("...initializing service module...");
store.init( config );
var getTableFromEntity = (entity, env) => {
logger.info("[getTableFromEntity|in] (%s,%s)", entity, env);
if( -1 === config.STOREFUNCTIONS_ENTITY_LIST.indexOf(entity) )
throw new ServerError('!!! table not enabled: ' + entity + ' !!!', 400);
let result = `${config.STOREFUNCTIONS_TENANT}_${entity}`;
if (null !== env){
if( -1 === config.STOREFUNCTIONS_ENV_LIST.indexOf(env) )
throw new ServerError('!!! table not enabled: ' + entity + ' !!!', 400);
result += '_' + env;
}
logger.info("[getTableFromEntity|out] => %s", result);
return result;
}
var confirmTable = (table, callback) => {
logger.debug("[confirmTable|in] (%s)", table);
store.findTable(table, (e,r) => {
if(e)
callback(e);
else {
if(true === r)
callback(null);
else{
store.createTable(table,(e) => {
if(e)
callback(e);
else{
logger.info("...table %s was created !", table);
callback(null);
}
});
}
}
});
logger.debug("[confirmTable|out]");
}
var entityRetrieval = (entity, id, env, callback) => {
logger.debug("[entityRetrieval|in] (%s,%s,%s)", entity, id, env);
let table = getTableFromEntity(entity, env);
confirmTable(table, (e) => {
if(e)
callback(e);
else{
store.getObj(table, id, (e,d)=>{
if(e)
callback(e);
else
callback(null, d);
});
}
});
logger.debug("[entityRetrieval|out]");
}
var entitiesRetrieval = (entity, env, callback) => {
logger.debug("[entitiesRetrieval|in] (%s,%s)", entity, env);
let table = getTableFromEntity(entity, env);
confirmTable(table, (e) => {
if(e)
callback(e);
else
store.getObjs(table, callback);
});
logger.debug("[entitiesRetrieval|out]");
}
logger.info("...service module is now initialized !");
return {
entityRetrieval: entityRetrieval
, entitiesRetrieval: entitiesRetrieval
, getTableFromEntity: getTableFromEntity
, confirmTable: confirmTable
};
};
module.exports = service_module;