@digione/node-custom-api 0.1.8-beta1 → 0.1.9
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/package.json +1 -1
- package/utils/helper.d.ts +2 -1
- package/utils/helper.js +10 -2
- package/utils/stream.d.ts +21 -3
- package/utils/stream.js +69 -11
package/package.json
CHANGED
package/utils/helper.d.ts
CHANGED
|
@@ -18,8 +18,9 @@ export declare const getTimestampMysql: (date?: any) => number;
|
|
|
18
18
|
export declare const getDateTime: (time?: any, { utc }?: {
|
|
19
19
|
utc?: boolean;
|
|
20
20
|
}) => moment.Moment;
|
|
21
|
-
export declare const getValueFunctionFile: (key: any) => (value: any, { result, fileUtil }?: {
|
|
21
|
+
export declare const getValueFunctionFile: (key: any) => (value: any, { result, json, fileUtil }?: {
|
|
22
22
|
result?: {};
|
|
23
|
+
json?: {};
|
|
23
24
|
fileUtil?: any;
|
|
24
25
|
}) => Promise<void>;
|
|
25
26
|
export declare const getValueFunctionLang: (key: any) => (value?: {}, { result, transform, spread, spread_all, raw, lang_code }?: {
|
package/utils/helper.js
CHANGED
|
@@ -79,8 +79,16 @@ const getDateTime = (time = undefined, { utc = true } = {}) => {
|
|
|
79
79
|
};
|
|
80
80
|
exports.getDateTime = getDateTime;
|
|
81
81
|
const getValueFunctionFile = (key) => {
|
|
82
|
-
return (value, { result = {}, fileUtil = undefined } = {}) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
83
|
-
if (
|
|
82
|
+
return (value, { result = {}, json = {}, fileUtil = undefined } = {}) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
83
|
+
if (json[key]) {
|
|
84
|
+
try {
|
|
85
|
+
result[key] = JSON.parse(json[key]);
|
|
86
|
+
}
|
|
87
|
+
catch (err) {
|
|
88
|
+
result[key] = null;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
else if (value[key]) {
|
|
84
92
|
result[key] = yield fileUtil.findOneFileById(value[key]);
|
|
85
93
|
}
|
|
86
94
|
});
|
package/utils/stream.d.ts
CHANGED
|
@@ -5,16 +5,20 @@ import { Request } from 'express';
|
|
|
5
5
|
import * as Joi from 'joi';
|
|
6
6
|
export declare const getValueFunctionRelationship: (key: any, { field_data }?: {
|
|
7
7
|
field_data?: {};
|
|
8
|
-
}) => (value: any, { result, ref, lang_code }?: {
|
|
8
|
+
}) => (value: any, { result, json, ref, raw, lang_code }?: {
|
|
9
9
|
result?: {};
|
|
10
|
+
json?: {};
|
|
10
11
|
ref?: string;
|
|
12
|
+
raw?: boolean;
|
|
11
13
|
lang_code?: string;
|
|
12
14
|
}) => Promise<void>;
|
|
13
15
|
export declare const getValueFunctionMultiple: (key: any, { field_data }?: {
|
|
14
16
|
field_data?: {};
|
|
15
|
-
}) => (value: any, { result, ref, lang_code }?: {
|
|
17
|
+
}) => (value: any, { result, json, ref, raw, lang_code }?: {
|
|
16
18
|
result?: {};
|
|
19
|
+
json?: {};
|
|
17
20
|
ref?: string;
|
|
21
|
+
raw?: boolean;
|
|
18
22
|
lang_code?: string;
|
|
19
23
|
}) => Promise<void>;
|
|
20
24
|
interface Field {
|
|
@@ -71,14 +75,16 @@ export declare class StreamUtil {
|
|
|
71
75
|
include?: any;
|
|
72
76
|
include_only?: boolean;
|
|
73
77
|
}): any;
|
|
74
|
-
buildStream(slug: string, namespace: string, { query, builder, fetch, attribute, attributes, field_exclude, include }?: {
|
|
78
|
+
buildStream(slug: string, namespace: string, { query, builder, fetch, label, attribute, attributes, field_exclude, include, include_all }?: {
|
|
75
79
|
query?: boolean;
|
|
76
80
|
builder?: boolean;
|
|
77
81
|
fetch?: boolean;
|
|
82
|
+
label?: boolean;
|
|
78
83
|
attribute?: boolean;
|
|
79
84
|
attributes?: any;
|
|
80
85
|
field_exclude?: any[];
|
|
81
86
|
include?: {};
|
|
87
|
+
include_all?: boolean;
|
|
82
88
|
}): Promise<{
|
|
83
89
|
stream: any;
|
|
84
90
|
fields: any;
|
|
@@ -99,6 +105,18 @@ export declare class StreamUtil {
|
|
|
99
105
|
raw?: boolean;
|
|
100
106
|
lang_code?: any;
|
|
101
107
|
}): Promise<{}>;
|
|
108
|
+
getValueByJson(slug: string, namespace: string, value: any, json: any, { query, lang_code }?: {
|
|
109
|
+
query?: boolean;
|
|
110
|
+
lang_code?: any;
|
|
111
|
+
}): Promise<{}>;
|
|
112
|
+
getStoreJson(slug: string, namespace: string, value: any, { query, lang_code, exclude_type }?: {
|
|
113
|
+
query?: boolean;
|
|
114
|
+
lang_code?: any;
|
|
115
|
+
exclude_type?: {};
|
|
116
|
+
}): Promise<{
|
|
117
|
+
result: {};
|
|
118
|
+
labels: any[];
|
|
119
|
+
}>;
|
|
102
120
|
genField(streams: Array<any>, { index, option, slug, id_stream, prefix, multiple_table, multiple_spread, addition, convert_option, field_option, default_value, default_lang, lang_code, no_lang, lang, country, section }?: {
|
|
103
121
|
index?: string;
|
|
104
122
|
option?: {};
|
package/utils/stream.js
CHANGED
|
@@ -24,10 +24,22 @@ const i18n_1 = require("i18n");
|
|
|
24
24
|
const _ = require("lodash");
|
|
25
25
|
const Joi = require("joi");
|
|
26
26
|
const getValueFunctionRelationship = (key, { field_data = {} } = {}) => {
|
|
27
|
-
return (value, { result = {}, ref = '', lang_code = '' } = {}) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
28
|
-
if (
|
|
27
|
+
return (value, { result = {}, json = {}, ref = '', raw = false, lang_code = '' } = {}) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
28
|
+
if (field_data['table']) {
|
|
29
29
|
let title_column = field_data['title_column'] || "title";
|
|
30
|
-
|
|
30
|
+
if (json[key]) {
|
|
31
|
+
try {
|
|
32
|
+
result[key] = JSON.parse(json[key]);
|
|
33
|
+
}
|
|
34
|
+
catch (err) {
|
|
35
|
+
result[key] = null;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
else if (value[key]) {
|
|
39
|
+
result[key] = yield (0, db_1.findOne)(ref + '_' + field_data['table'], { where: { id: value[key] }, attributes: ['*'] });
|
|
40
|
+
}
|
|
41
|
+
if (raw)
|
|
42
|
+
return;
|
|
31
43
|
if (result[key]) {
|
|
32
44
|
(0, helper_2.getValueFunctionLang)(title_column)(result[key], { result: result[key], lang_code });
|
|
33
45
|
}
|
|
@@ -36,10 +48,22 @@ const getValueFunctionRelationship = (key, { field_data = {} } = {}) => {
|
|
|
36
48
|
};
|
|
37
49
|
exports.getValueFunctionRelationship = getValueFunctionRelationship;
|
|
38
50
|
const getValueFunctionMultiple = (key, { field_data = {} } = {}) => {
|
|
39
|
-
return (value, { result = {}, ref = '', lang_code = '' } = {}) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
40
|
-
if (field_data['
|
|
51
|
+
return (value, { result = {}, json = {}, ref = '', raw = false, lang_code = '' } = {}) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
52
|
+
if (field_data['table']) {
|
|
41
53
|
let title_column = field_data['title_column'] || "title";
|
|
42
|
-
|
|
54
|
+
if (json[key]) {
|
|
55
|
+
try {
|
|
56
|
+
result[key] = JSON.parse(json[key]);
|
|
57
|
+
}
|
|
58
|
+
catch (err) {
|
|
59
|
+
result[key] = [];
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
else if (field_data['association']) {
|
|
63
|
+
result[key] = yield (0, db_1.findAll)(ref + '_' + field_data['table'], { where: { [`m.row_id`]: { [sequelize_1.Op.eq]: value['id'] } }, attributes: [`${ref + '_' + field_data['table']}.*`], association: [`INNER JOIN ${ref}_${field_data['association']} m ON ${ref + '_' + field_data['table']}.id = m.${field_data['table'] + '_id'}`] });
|
|
64
|
+
}
|
|
65
|
+
if (raw)
|
|
66
|
+
return;
|
|
43
67
|
if (result[key] && result[key].length) {
|
|
44
68
|
result[key] = result[key].map(i => (0, helper_2.getValueByLang)(i, { result: i, field: [title_column], lang_code }));
|
|
45
69
|
}
|
|
@@ -211,7 +235,7 @@ class StreamUtil {
|
|
|
211
235
|
}
|
|
212
236
|
return data;
|
|
213
237
|
}
|
|
214
|
-
buildStream(slug, namespace, { query = true, builder = true, fetch = false, attribute = false, attributes = null, field_exclude = [], include = {} } = {}) {
|
|
238
|
+
buildStream(slug, namespace, { query = true, builder = true, fetch = false, label = false, attribute = false, attributes = null, field_exclude = [], include = {}, include_all = false } = {}) {
|
|
215
239
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
216
240
|
let build = this.builder[slug + "_" + namespace] || { stream: null, fields: null, fetchFn: [], attributes: null };
|
|
217
241
|
if (!build['fields']) {
|
|
@@ -222,7 +246,7 @@ class StreamUtil {
|
|
|
222
246
|
build['stream'] = _.omit(data, ['fields']);
|
|
223
247
|
}
|
|
224
248
|
if ((fetch || attribute) && build['fields'].length) {
|
|
225
|
-
let fetchFn = [];
|
|
249
|
+
let fetchFn = [], fetchLabel = [];
|
|
226
250
|
attributes = attributes || {};
|
|
227
251
|
for (let field of build['fields']) {
|
|
228
252
|
let field_data = field['field_data'] || {};
|
|
@@ -232,24 +256,30 @@ class StreamUtil {
|
|
|
232
256
|
}
|
|
233
257
|
if (fetch) {
|
|
234
258
|
if (field['is_lang'] == "yes") {
|
|
259
|
+
label && fetchLabel.push(field);
|
|
235
260
|
fetchFn.push((0, helper_2.getValueFunctionLang)(field['field_slug']));
|
|
236
261
|
}
|
|
237
262
|
else {
|
|
238
263
|
switch (field['field_type']) {
|
|
239
264
|
case "file":
|
|
240
265
|
case "image":
|
|
241
|
-
include[field['field_slug']]
|
|
266
|
+
if (include[field['field_slug']] || include_all) {
|
|
267
|
+
label && fetchLabel.push(field);
|
|
268
|
+
fetchFn.push((0, helper_2.getValueFunctionFile)(field['field_slug']));
|
|
269
|
+
}
|
|
242
270
|
break;
|
|
243
271
|
case "relationship":
|
|
244
272
|
case "multiple":
|
|
245
|
-
if (include[field['field_slug']] && field_data['choose_stream']) {
|
|
273
|
+
if ((include[field['field_slug']] || include_all) && field_data['choose_stream']) {
|
|
246
274
|
let stream = yield stream_1.StreamModel.schema(this.ref, "_").findOne({ where: { id: field_data['choose_stream'] }, raw: true, attributes: ['stream_slug', 'stream_prefix', 'title_column'] });
|
|
247
275
|
if (stream['stream_slug']) {
|
|
248
276
|
field_data['table'] = stream['stream_prefix'] ? stream['stream_prefix'] + stream['stream_slug'] : stream['stream_slug'];
|
|
249
277
|
if (field['field_type'] == "relationship") {
|
|
278
|
+
label && fetchLabel.push(field);
|
|
250
279
|
fetchFn.push((0, exports.getValueFunctionRelationship)(field['field_slug'], { field_data }));
|
|
251
280
|
}
|
|
252
281
|
else if (field['field_type'] == "multiple") {
|
|
282
|
+
label && fetchLabel.push(field);
|
|
253
283
|
field_data['association'] = (build['stream']['stream_prefix'] ? build['stream']['stream_prefix'] + build['stream']['stream_slug'] : build['stream']['stream_slug']) + "_" + field_data['table'];
|
|
254
284
|
fetchFn.push((0, exports.getValueFunctionMultiple)(field['field_slug'], { field_data }));
|
|
255
285
|
}
|
|
@@ -259,11 +289,12 @@ class StreamUtil {
|
|
|
259
289
|
}
|
|
260
290
|
}
|
|
261
291
|
}
|
|
262
|
-
if (field['field_type'] == "multiple" || field['field_type'] == "any") {
|
|
292
|
+
if ((field['field_type'] == "multiple" && field_data['self_table'] != "yes") || field['field_type'] == "any") {
|
|
263
293
|
delete attributes[field['field_slug']];
|
|
264
294
|
}
|
|
265
295
|
}
|
|
266
296
|
build['fetchFn'] = fetchFn;
|
|
297
|
+
build['fetchLabel'] = fetchLabel;
|
|
267
298
|
}
|
|
268
299
|
if (attributes)
|
|
269
300
|
build['attributes'] = attributes;
|
|
@@ -289,6 +320,33 @@ class StreamUtil {
|
|
|
289
320
|
return result;
|
|
290
321
|
});
|
|
291
322
|
}
|
|
323
|
+
getValueByJson(slug, namespace, value, json, { query = false, lang_code = undefined } = {}) {
|
|
324
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
325
|
+
let result = {};
|
|
326
|
+
let fetchFn = yield this.getBuilder(slug, namespace, { query, index: "fetchFn" });
|
|
327
|
+
lang_code = lang_code || this.option.lang_code;
|
|
328
|
+
for (let f of fetchFn || []) {
|
|
329
|
+
yield f(value, { result, json, ref: this.ref, lang_code, fileUtil: this.fileUtil });
|
|
330
|
+
}
|
|
331
|
+
return result;
|
|
332
|
+
});
|
|
333
|
+
}
|
|
334
|
+
getStoreJson(slug, namespace, value, { query = false, lang_code = undefined, exclude_type = {} } = {}) {
|
|
335
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
336
|
+
let result = {}, labels = [];
|
|
337
|
+
let fetchLabel = yield this.getBuilder(slug, namespace, { query, index: "fetchLabel" });
|
|
338
|
+
lang_code = lang_code || this.option.lang_code;
|
|
339
|
+
for (let f of fetchLabel || []) {
|
|
340
|
+
let field_slug = f['field_slug'];
|
|
341
|
+
let field_type = f['field_type'];
|
|
342
|
+
if (field_slug && !exclude_type[field_type] && typeof value[field_slug] != "undefined") {
|
|
343
|
+
labels.push(field_slug);
|
|
344
|
+
result[field_slug] = JSON.stringify(value[field_slug]);
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
return { result, labels };
|
|
348
|
+
});
|
|
349
|
+
}
|
|
292
350
|
genField(streams, { index = "", option = {}, slug = "", id_stream = "", prefix = "", multiple_table = false, multiple_spread = false, addition = {}, convert_option = true, field_option = {}, default_value = {}, default_lang = "en", lang_code = "en", no_lang = false, lang = [], country = undefined, section = false } = {}) {
|
|
293
351
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
294
352
|
let fields = [], sections = [];
|