linker-api 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/dist/lib/config/link-config.js +30 -0
- package/dist/lib/config/link-config.js.map +1 -0
- package/dist/lib/database/database.js +61 -0
- package/dist/lib/database/database.js.map +1 -0
- package/dist/lib/database/mssql.js +72 -0
- package/dist/lib/database/mssql.js.map +1 -0
- package/dist/lib/database/mssql2.js +83 -0
- package/dist/lib/database/mssql2.js.map +1 -0
- package/dist/lib/database/prepare-call.js +45 -0
- package/dist/lib/database/prepare-call.js.map +1 -0
- package/dist/lib/database/prepared-stmt.js +92 -0
- package/dist/lib/database/prepared-stmt.js.map +1 -0
- package/dist/lib/database/schema/common-schema.js +81 -0
- package/dist/lib/database/schema/common-schema.js.map +1 -0
- package/dist/lib/database/schema/common-service.js +258 -0
- package/dist/lib/database/schema/common-service.js.map +1 -0
- package/dist/lib/database/schema/table-catelog.js +74 -0
- package/dist/lib/database/schema/table-catelog.js.map +1 -0
- package/dist/lib/database/transaction.js +18 -0
- package/dist/lib/database/transaction.js.map +1 -0
- package/dist/lib/dispatcher/health-service.js +135 -0
- package/dist/lib/dispatcher/health-service.js.map +1 -0
- package/dist/lib/dispatcher/i-dispatcher.js +191 -0
- package/dist/lib/dispatcher/i-dispatcher.js.map +1 -0
- package/dist/lib/dispatcher/table-catelog.js +74 -0
- package/dist/lib/dispatcher/table-catelog.js.map +1 -0
- package/dist/lib/factory/factory.js +67 -0
- package/dist/lib/factory/factory.js.map +1 -0
- package/dist/public-api.js +21 -0
- package/dist/public-api.js.map +1 -0
- package/package.json +31 -0
- package/src/lib/config/link-config.ts +28 -0
- package/src/lib/database/database.ts +43 -0
- package/src/lib/database/mssql.ts +47 -0
- package/src/lib/database/mssql2.ts +57 -0
- package/src/lib/database/prepare-call.ts +24 -0
- package/src/lib/database/prepared-stmt.ts +65 -0
- package/src/lib/database/schema/common-schema.ts +77 -0
- package/src/lib/database/schema/common-service.ts +204 -0
- package/src/lib/database/schema/table-catelog.ts +70 -0
- package/src/lib/database/transaction.ts +12 -0
- package/src/lib/dispatcher/health-service.ts +83 -0
- package/src/lib/dispatcher/i-dispatcher.ts +165 -0
- package/src/lib/dispatcher/table-catelog.ts +70 -0
- package/src/lib/factory/factory.ts +14 -0
- package/src/public-api.ts +5 -0
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.IDispatcher = void 0;
|
|
13
|
+
const database_1 = require("../database/database");
|
|
14
|
+
class IDispatcher {
|
|
15
|
+
getSchemaConfig() {
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
;
|
|
19
|
+
findSchema(params) {
|
|
20
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
21
|
+
let schema = this.getSchemaConfig().find((item) => item.id === params.service);
|
|
22
|
+
if (!schema) {
|
|
23
|
+
throw new Error('Schema not found.');
|
|
24
|
+
}
|
|
25
|
+
schema.table = schema.table || [];
|
|
26
|
+
if (!schema.isLoaded) {
|
|
27
|
+
let common = this.getSchemaConfig().find((item) => item.id === 'common');
|
|
28
|
+
schema.table = schema.table.concat(common.table);
|
|
29
|
+
schema.isLoaded = true;
|
|
30
|
+
}
|
|
31
|
+
return schema;
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
findTable(params, schema) {
|
|
35
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
36
|
+
let table = schema.table.find((item) => (item === null || item === void 0 ? void 0 : item.id) === params.operation);
|
|
37
|
+
return table;
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
execute(params, input, trans) {
|
|
41
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
42
|
+
let result;
|
|
43
|
+
let resultset = [];
|
|
44
|
+
let schema = yield this.findSchema(params);
|
|
45
|
+
let table = yield this.findTable(params, schema);
|
|
46
|
+
if (table === null || table === void 0 ? void 0 : table.executor) {
|
|
47
|
+
resultset = yield table.executor(input, schema.table, trans, this);
|
|
48
|
+
result = { status: 0, results: resultset };
|
|
49
|
+
}
|
|
50
|
+
else if (table === null || table === void 0 ? void 0 : table.executorSet) {
|
|
51
|
+
resultset = yield this.executeSet(input, table, trans);
|
|
52
|
+
result = { status: 0, results: resultset };
|
|
53
|
+
}
|
|
54
|
+
else if (table === null || table === void 0 ? void 0 : table.url) {
|
|
55
|
+
resultset = yield this.executeUrl(input, table, trans);
|
|
56
|
+
result = { status: 0, results: resultset };
|
|
57
|
+
}
|
|
58
|
+
else if (table === null || table === void 0 ? void 0 : table.Query) {
|
|
59
|
+
resultset = yield this.executeQuery(input, table, trans);
|
|
60
|
+
result = { status: 0, results: resultset };
|
|
61
|
+
}
|
|
62
|
+
else if (table === null || table === void 0 ? void 0 : table.results) {
|
|
63
|
+
resultset = table === null || table === void 0 ? void 0 : table.results;
|
|
64
|
+
result = { status: 0, results: resultset };
|
|
65
|
+
}
|
|
66
|
+
else if (table === null || table === void 0 ? void 0 : table.data) {
|
|
67
|
+
result = table.data;
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
throw new Error('Query not found.');
|
|
71
|
+
}
|
|
72
|
+
return result;
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
executeSet(input, table, trans) {
|
|
76
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
77
|
+
for (let executorId of table.executorSet) {
|
|
78
|
+
let executor = table.find((item) => item.id === executorId);
|
|
79
|
+
let uspGenDocNo = yield this.executeQuery(input, executor, trans);
|
|
80
|
+
input.appNo = uspGenDocNo[0]["RESULT"];
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
executeUrl(input, table, trans) {
|
|
85
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
86
|
+
let result;
|
|
87
|
+
input.headers = {
|
|
88
|
+
'Content-type': 'application/json; charset=UTF-8'
|
|
89
|
+
};
|
|
90
|
+
if (table.preProcessor) {
|
|
91
|
+
yield table.preProcessor(input, []);
|
|
92
|
+
}
|
|
93
|
+
if (input.method === 'POST') {
|
|
94
|
+
let req = {
|
|
95
|
+
method: 'POST',
|
|
96
|
+
headers: input.headers
|
|
97
|
+
};
|
|
98
|
+
if (input.headers) {
|
|
99
|
+
delete input.headers;
|
|
100
|
+
}
|
|
101
|
+
if (input.files) {
|
|
102
|
+
delete input.files;
|
|
103
|
+
}
|
|
104
|
+
delete input.attributes;
|
|
105
|
+
req.body = JSON.stringify(input);
|
|
106
|
+
result = yield fetch(table === null || table === void 0 ? void 0 : table.url, req);
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
let req = {
|
|
110
|
+
headers: input.headers
|
|
111
|
+
};
|
|
112
|
+
let params = this.convert2Url(input);
|
|
113
|
+
result = yield fetch(`${table === null || table === void 0 ? void 0 : table.url}${params}`, req);
|
|
114
|
+
}
|
|
115
|
+
let posts = yield result.json();
|
|
116
|
+
if (table.postProcessor) {
|
|
117
|
+
posts = yield table.postProcessor(input, posts);
|
|
118
|
+
}
|
|
119
|
+
return posts;
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
executeProcedure(input, output, table, trans) {
|
|
123
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
124
|
+
let stmt = yield database_1.Database.preparedCall(table.Query, trans);
|
|
125
|
+
return stmt.execute(input, output);
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
executeQuery(input, table, trans) {
|
|
129
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
130
|
+
let resultset = [];
|
|
131
|
+
try {
|
|
132
|
+
let stmt;
|
|
133
|
+
if (trans)
|
|
134
|
+
stmt = yield database_1.Database.preparedStatement(table.Query, trans);
|
|
135
|
+
else
|
|
136
|
+
stmt = yield database_1.Database.preparedStatement(table.Query);
|
|
137
|
+
this.parseParams(input, table);
|
|
138
|
+
if (table.preProcessors) {
|
|
139
|
+
for (let processor of table.preProcessors) {
|
|
140
|
+
resultset = yield processor(input, resultset);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
resultset = yield stmt.execute(input);
|
|
144
|
+
if (table.postProcessors) {
|
|
145
|
+
for (let processor of table.postProcessors) {
|
|
146
|
+
let pResult = yield processor(input, resultset);
|
|
147
|
+
if (pResult) {
|
|
148
|
+
resultset = pResult;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
catch (err) {
|
|
154
|
+
console.log(err.toString());
|
|
155
|
+
throw new Error(err.message);
|
|
156
|
+
}
|
|
157
|
+
return resultset;
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
parseParams(input, table) {
|
|
161
|
+
if (table.params && table.params.length > 0) {
|
|
162
|
+
table.params.forEach((param) => {
|
|
163
|
+
if (param.opr.toLowerCase() === 'in') {
|
|
164
|
+
input[param.name] = input[param.name].split(","); //JSON.parse(input[param.name]);
|
|
165
|
+
}
|
|
166
|
+
if (param.opr === 'like') {
|
|
167
|
+
input[param.name] = `%${input[param.name]}%`;
|
|
168
|
+
}
|
|
169
|
+
if (param.opr === 'decode') {
|
|
170
|
+
input[param.name] = `${btoa(input[param.name])}`;
|
|
171
|
+
}
|
|
172
|
+
if (param.opr === 'default') {
|
|
173
|
+
input[param.name] = `${input[param.name] || param.value}`;
|
|
174
|
+
}
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
convert2Url(input) {
|
|
179
|
+
let elements = '';
|
|
180
|
+
let idx = 0;
|
|
181
|
+
for (let [key, value] of Object.entries(input)) {
|
|
182
|
+
if (idx > 0)
|
|
183
|
+
elements += '&';
|
|
184
|
+
elements += key + '=' + value;
|
|
185
|
+
idx++;
|
|
186
|
+
}
|
|
187
|
+
return elements;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
exports.IDispatcher = IDispatcher;
|
|
191
|
+
//# sourceMappingURL=i-dispatcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"i-dispatcher.js","sourceRoot":"","sources":["../../../src/lib/dispatcher/i-dispatcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TableCatelog = void 0;
|
|
4
|
+
exports.TableCatelog = [
|
|
5
|
+
{
|
|
6
|
+
id: 'MST_SERVGROUPS',
|
|
7
|
+
primaryKeys: [
|
|
8
|
+
{ COLUMN_NAME: 'SRVGRPCODE' }
|
|
9
|
+
],
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
id: 'MST_SERVSUBGRP',
|
|
13
|
+
primaryKeys: [
|
|
14
|
+
{ COLUMN_NAME: 'SUBGRPCODE' }
|
|
15
|
+
],
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
id: 'Mst_ChargeSheet',
|
|
19
|
+
primaryKeys: [
|
|
20
|
+
{ COLUMN_NAME: 'TARIFFID' },
|
|
21
|
+
{ COLUMN_NAME: 'CONS_TYPE' },
|
|
22
|
+
{ COLUMN_NAME: 'Doctor_ID' }
|
|
23
|
+
],
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
id: 'HospitalsList',
|
|
27
|
+
primaryKeys: [
|
|
28
|
+
{ COLUMN_NAME: 'Hospital_Id' },
|
|
29
|
+
],
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
id: 'MST_REFERRAL',
|
|
33
|
+
primaryKeys: [
|
|
34
|
+
{ COLUMN_NAME: 'REFERRAL_ID' },
|
|
35
|
+
],
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
id: 'SECURITY_USERS',
|
|
39
|
+
primaryKeys: [
|
|
40
|
+
{ COLUMN_NAME: 'USERID' },
|
|
41
|
+
],
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
id: 'WL_EMP_MAST',
|
|
45
|
+
primaryKeys: [
|
|
46
|
+
{ COLUMN_NAME: 'MOBILE' },
|
|
47
|
+
],
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
id: 'TM_PATIENTPREFERENCES',
|
|
51
|
+
primaryKeys: [
|
|
52
|
+
{ COLUMN_NAME: 'USERID' },
|
|
53
|
+
],
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
id: 'MST_REFERRALSOURCE',
|
|
57
|
+
primaryKeys: [
|
|
58
|
+
{ COLUMN_NAME: 'SOURCE_ID' },
|
|
59
|
+
],
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
id: 'Mst_DoctorMaster',
|
|
63
|
+
primaryKeys: [
|
|
64
|
+
{ COLUMN_NAME: 'Code' },
|
|
65
|
+
],
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
id: 'Speciality_Master',
|
|
69
|
+
primaryKeys: [
|
|
70
|
+
{ COLUMN_NAME: 'Speciality_ID' },
|
|
71
|
+
],
|
|
72
|
+
},
|
|
73
|
+
];
|
|
74
|
+
//# sourceMappingURL=table-catelog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table-catelog.js","sourceRoot":"","sources":["../../../src/lib/dispatcher/table-catelog.ts"],"names":[],"mappings":";;;AAAa,QAAA,YAAY,GAAI;IACzB;QACI,EAAE,EAAE,gBAAgB;QACpB,WAAW,EAAE;YACX,EAAC,WAAW,EAAE,YAAY,EAAC;SAC5B;KACJ;IACD;QACI,EAAE,EAAE,gBAAgB;QACpB,WAAW,EAAE;YACX,EAAC,WAAW,EAAE,YAAY,EAAC;SAC5B;KACJ;IACD;QACI,EAAE,EAAE,iBAAiB;QACrB,WAAW,EAAE;YACX,EAAC,WAAW,EAAE,UAAU,EAAC;YACzB,EAAC,WAAW,EAAE,WAAW,EAAC;YAC1B,EAAC,WAAW,EAAE,WAAW,EAAC;SAC3B;KACJ;IACD;QACI,EAAE,EAAE,eAAe;QACnB,WAAW,EAAE;YACX,EAAC,WAAW,EAAE,aAAa,EAAC;SAC7B;KACJ;IACD;QACI,EAAE,EAAE,cAAc;QAClB,WAAW,EAAE;YACX,EAAC,WAAW,EAAE,aAAa,EAAC;SAC7B;KACJ;IACD;QACI,EAAE,EAAE,gBAAgB;QACpB,WAAW,EAAE;YACX,EAAC,WAAW,EAAE,QAAQ,EAAC;SACxB;KACJ;IACD;QACI,EAAE,EAAE,aAAa;QACjB,WAAW,EAAE;YACX,EAAC,WAAW,EAAE,QAAQ,EAAC;SACxB;KACJ;IACD;QACI,EAAE,EAAE,uBAAuB;QAC3B,WAAW,EAAE;YACX,EAAC,WAAW,EAAE,QAAQ,EAAC;SACxB;KACJ;IACD;QACI,EAAE,EAAE,oBAAoB;QACxB,WAAW,EAAE;YACX,EAAC,WAAW,EAAE,WAAW,EAAC;SAC3B;KACJ;IACD;QACI,EAAE,EAAE,kBAAkB;QACtB,WAAW,EAAE;YACX,EAAC,WAAW,EAAE,MAAM,EAAC;SACtB;KACJ;IACD;QACI,EAAE,EAAE,mBAAmB;QACvB,WAAW,EAAE;YACX,EAAC,WAAW,EAAE,eAAe,EAAC;SAC/B;KACJ;CACJ,CAAC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
36
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
37
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
38
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
39
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
40
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
41
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
42
|
+
});
|
|
43
|
+
};
|
|
44
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
45
|
+
exports.Factory = void 0;
|
|
46
|
+
class Factory {
|
|
47
|
+
static getCommonService() {
|
|
48
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
49
|
+
let comm = yield Promise.resolve().then(() => __importStar(require('../../lib/database/schema/common-service')));
|
|
50
|
+
return comm.CommonService;
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
static getLinkConfig() {
|
|
54
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
55
|
+
let linkConfig = yield Promise.resolve().then(() => __importStar(require('../../lib/config/link-config')));
|
|
56
|
+
return linkConfig.LinkConfig;
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
static getApiService() {
|
|
60
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
61
|
+
let svc = yield Promise.resolve().then(() => __importStar(require('../../lib/dispatcher/health-service')));
|
|
62
|
+
return svc.HealthService;
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
exports.Factory = Factory;
|
|
67
|
+
//# sourceMappingURL=factory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../src/lib/factory/factory.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,MAAa,OAAO;IAChB,MAAM,CAAO,gBAAgB;;YACzB,IAAI,IAAI,GAAG,wDAAa,0CAA0C,GAAC,CAAA;YACnE,OAAO,IAAI,CAAC,aAAa,CAAC;QAC9B,CAAC;KAAA;IACD,MAAM,CAAO,aAAa;;YACtB,IAAI,UAAU,GAAG,wDAAa,8BAA8B,GAAC,CAAC;YAC9D,OAAO,UAAU,CAAC,UAAU,CAAC;QACjC,CAAC;KAAA;IACD,MAAM,CAAO,aAAa;;YACtB,IAAI,GAAG,GAAG,wDAAa,qCAAqC,GAAC,CAAA;YAC7D,OAAO,GAAG,CAAC,aAAa,CAAC;QAC7B,CAAC;KAAA;CACJ;AAbD,0BAaC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Public API Surface of tharak-core-utils
|
|
4
|
+
*/
|
|
5
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
8
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
9
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
10
|
+
}
|
|
11
|
+
Object.defineProperty(o, k2, desc);
|
|
12
|
+
}) : (function(o, m, k, k2) {
|
|
13
|
+
if (k2 === undefined) k2 = k;
|
|
14
|
+
o[k2] = m[k];
|
|
15
|
+
}));
|
|
16
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
17
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
18
|
+
};
|
|
19
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
+
__exportStar(require("./lib/factory/factory"), exports);
|
|
21
|
+
//# sourceMappingURL=public-api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"public-api.js","sourceRoot":"","sources":["../src/public-api.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;AAEH,wDAAsC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "linker-api",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "",
|
|
5
|
+
"main": "./dist/public-api.js",
|
|
6
|
+
"typings": "./dist/index.d.ts",
|
|
7
|
+
"scripts": {
|
|
8
|
+
"pack-lib": "node -e \"require('./build').prepareLib();\" && cd dist && npm pack",
|
|
9
|
+
"prebuild": "rimraf dist",
|
|
10
|
+
"build": "tsc",
|
|
11
|
+
"test": "echo \"Error: no test specified\" && exit 1"
|
|
12
|
+
},
|
|
13
|
+
"repository": {
|
|
14
|
+
"type": "git",
|
|
15
|
+
"url": "git+https://github.com/thiragati-soft/linker-api.git"
|
|
16
|
+
},
|
|
17
|
+
"author": "",
|
|
18
|
+
"license": "ISC",
|
|
19
|
+
"bugs": {
|
|
20
|
+
"url": "https://github.com/thiragati-soft/linker-api/issues"
|
|
21
|
+
},
|
|
22
|
+
"homepage": "https://github.com/thiragati-soft/linker-api#readme",
|
|
23
|
+
"devDependencies": {
|
|
24
|
+
"@types/node": "^20.12.7",
|
|
25
|
+
"fs-extra": "^11.3.2",
|
|
26
|
+
"mssql": "^12.0.0",
|
|
27
|
+
"rimraf": "^6.1.0",
|
|
28
|
+
"tharak-api": "^0.0.7",
|
|
29
|
+
"typescript": "^5.4.5"
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
const oneDay = 1000 * 60 * 60 * 24
|
|
2
|
+
export const LinkConfig = {
|
|
3
|
+
CUSTOMER_ID: 'demo-app',
|
|
4
|
+
CONTEXT_PATH: '/demo-api',
|
|
5
|
+
PROD_DB_CONFIGS:{
|
|
6
|
+
},
|
|
7
|
+
DATABASE_PROVIDER: {id: 'mssql', configID:'localProsoftConfig'},
|
|
8
|
+
API_SCAN:["schemas"],
|
|
9
|
+
SESSION_CONFIG: {
|
|
10
|
+
secret: "thisismysecrctekeyfhrgfgrfrty84fwir767",
|
|
11
|
+
saveUninitialized:true,
|
|
12
|
+
cookie: { maxAge: oneDay },
|
|
13
|
+
resave: false
|
|
14
|
+
},
|
|
15
|
+
IS_OAUTH: true,
|
|
16
|
+
//EXCLUSION_URLS:['/oauth/token'],
|
|
17
|
+
SECURITY_CONFIG:
|
|
18
|
+
{
|
|
19
|
+
audience: 'wury.co.id',
|
|
20
|
+
algorithm: 'RS256',
|
|
21
|
+
issuer: 'api.wury.auth.com',
|
|
22
|
+
accessTokenExpiry: 1800,
|
|
23
|
+
accessTokenSecret: 'XT6PRpRuehFsyMa2',
|
|
24
|
+
refreshTokenExpiry: 1209600,
|
|
25
|
+
refreshTokenSecret: 'JWPVzFWkqGxoE2C2'
|
|
26
|
+
},
|
|
27
|
+
APPS: []
|
|
28
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
import { LinkConfig } from "../config/link-config";
|
|
4
|
+
import { Mssql } from "./mssql";
|
|
5
|
+
|
|
6
|
+
export class Database {
|
|
7
|
+
private static instance:Database = new Database();
|
|
8
|
+
private dbase:Mssql;
|
|
9
|
+
private constructor(){
|
|
10
|
+
switch(LinkConfig.DATABASE_PROVIDER.id){
|
|
11
|
+
case 'mssql':
|
|
12
|
+
this.dbase = new Mssql(LinkConfig.PROD_DB_CONFIGS[LinkConfig.DATABASE_PROVIDER.configID]);
|
|
13
|
+
break;
|
|
14
|
+
case 'mysql':
|
|
15
|
+
this.dbase = new Mssql(LinkConfig.PROD_DB_CONFIGS[LinkConfig.DATABASE_PROVIDER.configID]);
|
|
16
|
+
break;
|
|
17
|
+
default:
|
|
18
|
+
this.dbase = new Mssql(LinkConfig.PROD_DB_CONFIGS[LinkConfig.DATABASE_PROVIDER.configID]);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
static find(){
|
|
22
|
+
if(!this.instance)
|
|
23
|
+
this.instance = new Database();
|
|
24
|
+
return this.instance;
|
|
25
|
+
}
|
|
26
|
+
static async statement(transaction?:any){
|
|
27
|
+
return this.instance.dbase.statement(transaction);
|
|
28
|
+
}
|
|
29
|
+
static async preparedStatement(query:string, transaction?:any){
|
|
30
|
+
let stmt = await this.instance.dbase.preparedStatement(query, transaction);
|
|
31
|
+
return stmt;
|
|
32
|
+
}
|
|
33
|
+
static async preparedCall(query:string, transaction?:any){
|
|
34
|
+
let stmt = await this.instance.dbase.preparedCall(query, transaction);
|
|
35
|
+
return stmt;
|
|
36
|
+
}
|
|
37
|
+
static findTable(name:string){
|
|
38
|
+
return this.instance.dbase.findTable(name);
|
|
39
|
+
}
|
|
40
|
+
static async findTransaction(){
|
|
41
|
+
return this.instance.dbase.findTransaction();
|
|
42
|
+
}
|
|
43
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import sql, { ConnectionPool, PreparedStatement, Transaction, Statement } from 'mssql';
|
|
2
|
+
import { PrepareCall } from './prepare-call';
|
|
3
|
+
import { PreparedStmt } from './prepared-stmt';
|
|
4
|
+
export class Mssql {
|
|
5
|
+
private pool:ConnectionPool;
|
|
6
|
+
constructor(private config:any){
|
|
7
|
+
this.pool = new sql.ConnectionPool(config);
|
|
8
|
+
}
|
|
9
|
+
async findTransaction(){
|
|
10
|
+
if(!this.pool)
|
|
11
|
+
this.pool = new sql.ConnectionPool(this.config);
|
|
12
|
+
await this.pool.connect();
|
|
13
|
+
const transaction: Transaction = new sql.Transaction(this.pool);
|
|
14
|
+
await transaction.begin();
|
|
15
|
+
return transaction;
|
|
16
|
+
}
|
|
17
|
+
async statement(transaction?:any){
|
|
18
|
+
if(!this.pool)
|
|
19
|
+
this.pool = new sql.ConnectionPool(this.config);
|
|
20
|
+
if(!transaction)
|
|
21
|
+
await this.pool.connect();
|
|
22
|
+
let req:Statement = new sql.Statement(this.pool);
|
|
23
|
+
return req;
|
|
24
|
+
}
|
|
25
|
+
async preparedStatement(query:string, transaction?:any){
|
|
26
|
+
if(!this.pool)
|
|
27
|
+
this.pool = new sql.ConnectionPool(this.config);
|
|
28
|
+
if(!transaction)
|
|
29
|
+
await this.pool.connect();
|
|
30
|
+
const req: PreparedStatement = new sql.PreparedStatement(this.pool);
|
|
31
|
+
return new PreparedStmt(req, query, sql);
|
|
32
|
+
}
|
|
33
|
+
async preparedCall(query:string, transaction?:any){
|
|
34
|
+
if(!this.pool)
|
|
35
|
+
this.pool = new sql.ConnectionPool(this.config);
|
|
36
|
+
let req;
|
|
37
|
+
if(transaction)
|
|
38
|
+
req = new sql.Request(transaction.transact);
|
|
39
|
+
else
|
|
40
|
+
req = new sql.Request(this.pool);
|
|
41
|
+
return new PrepareCall(req, query, sql);
|
|
42
|
+
}
|
|
43
|
+
findTable(name:string){
|
|
44
|
+
const table = new sql.Table(name);
|
|
45
|
+
return table;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import sql from 'mssql';
|
|
2
|
+
import { PrepareCall } from './prepare-call';
|
|
3
|
+
import { PreparedStmt } from './prepared-stmt';
|
|
4
|
+
import { Transaction } from './transaction';
|
|
5
|
+
export class Mssql {
|
|
6
|
+
private pool:any;
|
|
7
|
+
constructor(private config:any){}
|
|
8
|
+
async findTransaction(){
|
|
9
|
+
if(!this.pool)
|
|
10
|
+
this.pool = await sql.connect(this.config);
|
|
11
|
+
let trans = new Promise((myResolve, myReject)=> {
|
|
12
|
+
const transaction = new sql.Transaction(this.pool);
|
|
13
|
+
transaction.begin(err => {
|
|
14
|
+
if(err){
|
|
15
|
+
myReject(err);
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
myResolve(new Transaction(transaction));
|
|
19
|
+
});
|
|
20
|
+
});
|
|
21
|
+
return await trans;
|
|
22
|
+
}
|
|
23
|
+
async statement(transaction?:any){
|
|
24
|
+
if(!this.pool)
|
|
25
|
+
this.pool = await sql.connect(this.config);
|
|
26
|
+
let req;
|
|
27
|
+
if(transaction)
|
|
28
|
+
req = new sql.Request(transaction);
|
|
29
|
+
else
|
|
30
|
+
req = new sql.Request(this.pool);
|
|
31
|
+
return req;
|
|
32
|
+
}
|
|
33
|
+
async preparedStatement(query:string, transaction?:any){
|
|
34
|
+
if(!this.pool)
|
|
35
|
+
this.pool = await sql.connect(this.config);
|
|
36
|
+
let req;
|
|
37
|
+
if(transaction)
|
|
38
|
+
req = new sql.PreparedStatement(transaction.transact);
|
|
39
|
+
else
|
|
40
|
+
req = new sql.PreparedStatement(this.pool);
|
|
41
|
+
return new PreparedStmt(req, query, sql);
|
|
42
|
+
}
|
|
43
|
+
async preparedCall(query:string, transaction?:any){
|
|
44
|
+
if(!this.pool)
|
|
45
|
+
this.pool = await sql.connect(this.config);
|
|
46
|
+
let req;
|
|
47
|
+
if(transaction)
|
|
48
|
+
req = new sql.Request(transaction.transact);
|
|
49
|
+
else
|
|
50
|
+
req = new sql.Request(this.pool);
|
|
51
|
+
return new PrepareCall(req, query, sql);
|
|
52
|
+
}
|
|
53
|
+
findTable(name:string){
|
|
54
|
+
const table = new sql.Table(name);
|
|
55
|
+
return table;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export class PrepareCall {
|
|
2
|
+
constructor(private stmt:any, private query:string, private provider:any){
|
|
3
|
+
}
|
|
4
|
+
async execute(input:any, outputMap?:any, types?:any){
|
|
5
|
+
try{
|
|
6
|
+
Object.keys(input).forEach((key:string)=>{
|
|
7
|
+
this.stmt.input(key, this.provider.VarChar, input[key]);
|
|
8
|
+
});
|
|
9
|
+
if(outputMap){
|
|
10
|
+
Object.keys(outputMap).forEach((key:string)=>{
|
|
11
|
+
this.stmt = this.stmt.output(key);
|
|
12
|
+
});
|
|
13
|
+
}else{
|
|
14
|
+
this.stmt = this.stmt.output('RESULT');
|
|
15
|
+
}
|
|
16
|
+
let resultset = await this.stmt.execute(this.query);
|
|
17
|
+
console.log(resultset.output);
|
|
18
|
+
return resultset.output;
|
|
19
|
+
}catch(err){
|
|
20
|
+
console.log(err.toString());
|
|
21
|
+
throw err;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|