@digione/node-custom-api 0.1.8-beta1 → 0.1.9-beta1
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/models/system/file.d.ts +1 -0
- package/models/system/file.js +1 -0
- package/package.json +1 -1
- package/utils/file.d.ts +6 -3
- package/utils/file.js +21 -19
- 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/models/system/file.d.ts
CHANGED
|
@@ -90,6 +90,7 @@ export declare const FileAttr: {
|
|
|
90
90
|
upload: sequelize.TinyIntegerDataType;
|
|
91
91
|
custom: sequelize.AbstractDataTypeConstructor;
|
|
92
92
|
tags: sequelize.AbstractDataTypeConstructor;
|
|
93
|
+
group: sequelize.StringDataType;
|
|
93
94
|
file_link: sequelize.EnumDataType<"no" | "yes">;
|
|
94
95
|
file_id: sequelize.StringDataType;
|
|
95
96
|
uid: sequelize.StringDataType;
|
package/models/system/file.js
CHANGED
|
@@ -95,6 +95,7 @@ exports.FileAttr = {
|
|
|
95
95
|
upload: sequelize.TINYINT({ length: 1 }),
|
|
96
96
|
custom: sequelize.JSON,
|
|
97
97
|
tags: sequelize.JSON,
|
|
98
|
+
group: sequelize.STRING({ length: 20 }),
|
|
98
99
|
file_link: sequelize.ENUM('no', 'yes'),
|
|
99
100
|
file_id: sequelize.STRING({ length: 15 }),
|
|
100
101
|
uid: sequelize.STRING({ length: 100 })
|
package/package.json
CHANGED
package/utils/file.d.ts
CHANGED
|
@@ -124,11 +124,12 @@ export declare class FileUtil {
|
|
|
124
124
|
tags?: TagFile;
|
|
125
125
|
group?: any;
|
|
126
126
|
}): Promise<any>;
|
|
127
|
-
uploadByReq(req: Request, slug: string, user_id: any, { parent_id, parent_slug, name, root, thumb, width, height, input, is_hidden, tags, group }?: {
|
|
127
|
+
uploadByReq(req: Request, slug: string, user_id: any, { parent_id, parent_slug, name, root, format, thumb, width, height, input, is_hidden, tags, group }?: {
|
|
128
128
|
parent_id?: number;
|
|
129
129
|
parent_slug?: string;
|
|
130
130
|
name?: any;
|
|
131
131
|
root?: boolean;
|
|
132
|
+
format?: boolean;
|
|
132
133
|
thumb?: boolean;
|
|
133
134
|
width?: number;
|
|
134
135
|
height?: number;
|
|
@@ -156,7 +157,8 @@ export declare class FileUtil {
|
|
|
156
157
|
group?: any;
|
|
157
158
|
}): Promise<any>;
|
|
158
159
|
allowedFileType(extension: any): Promise<any>;
|
|
159
|
-
formatFile(folder_id: any, user_id: any, reqs: Array<any>, files: Array<any>, { use_id, field, formatDateTime, input, is_hidden, tags, group }?: {
|
|
160
|
+
formatFile(folder_id: any, user_id: any, reqs: Array<any>, files: Array<any>, { format, use_id, field, formatDateTime, input, is_hidden, tags, group }?: {
|
|
161
|
+
format?: boolean;
|
|
160
162
|
use_id?: boolean;
|
|
161
163
|
field?: any[];
|
|
162
164
|
formatDateTime?: string;
|
|
@@ -182,7 +184,8 @@ export declare class FileUtil {
|
|
|
182
184
|
tags: TagFile;
|
|
183
185
|
group: any;
|
|
184
186
|
}[]>;
|
|
185
|
-
insertFileUnique(results: Array<any>, { thumb, width, height }?: {
|
|
187
|
+
insertFileUnique(results: Array<any>, { format, thumb, width, height }?: {
|
|
188
|
+
format?: boolean;
|
|
186
189
|
thumb?: boolean;
|
|
187
190
|
width?: number;
|
|
188
191
|
height?: number;
|
package/utils/file.js
CHANGED
|
@@ -392,7 +392,7 @@ class FileUtil {
|
|
|
392
392
|
return (yield this.findAllFile({ where: Object.assign({ id }, where), full, file_link, parent_folder, limit: 1, tags, group }))[0] || null;
|
|
393
393
|
});
|
|
394
394
|
}
|
|
395
|
-
uploadByReq(req, slug, user_id, { parent_id = 0, parent_slug = "", name = undefined, root = false, thumb = false, width = 0, height = 0, input = {}, is_hidden = undefined, tags = undefined, group = undefined } = {}) {
|
|
395
|
+
uploadByReq(req, slug, user_id, { parent_id = 0, parent_slug = "", name = undefined, root = false, format = false, thumb = false, width = 0, height = 0, input = {}, is_hidden = undefined, tags = undefined, group = undefined } = {}) {
|
|
396
396
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
397
397
|
req.files = req.file ? [req.file] : (req.files || []);
|
|
398
398
|
if (req.files.length && slug) {
|
|
@@ -419,7 +419,7 @@ class FileUtil {
|
|
|
419
419
|
}
|
|
420
420
|
let results = yield this.upload(files);
|
|
421
421
|
results = yield this.formatFile(folder['id'], user_id, reqs, results, { input, is_hidden, tags, group });
|
|
422
|
-
return yield this.insertFileUnique(results, { thumb, width, height });
|
|
422
|
+
return yield this.insertFileUnique(results, { format, thumb, width, height });
|
|
423
423
|
}
|
|
424
424
|
return Promise.reject(errors_1.generalError.BAD_REQUEST);
|
|
425
425
|
});
|
|
@@ -557,7 +557,7 @@ class FileUtil {
|
|
|
557
557
|
return type;
|
|
558
558
|
});
|
|
559
559
|
}
|
|
560
|
-
formatFile(folder_id, user_id, reqs, files, { use_id = true, field = [], formatDateTime = "X", input = {}, is_hidden = undefined, tags = undefined, group = undefined } = {}) {
|
|
560
|
+
formatFile(folder_id, user_id, reqs, files, { format = false, use_id = true, field = [], formatDateTime = "X", input = {}, is_hidden = undefined, tags = undefined, group = undefined } = {}) {
|
|
561
561
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
562
562
|
try {
|
|
563
563
|
let result = yield Promise.all(files.map((file, key) => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
@@ -574,7 +574,7 @@ class FileUtil {
|
|
|
574
574
|
path = (index < 0) ? protocol + path : path;
|
|
575
575
|
}
|
|
576
576
|
let extension = mime.extension(reqs[key].mimetype);
|
|
577
|
-
let
|
|
577
|
+
let item = Object.assign(Object.assign({}, input), { folder_id,
|
|
578
578
|
user_id,
|
|
579
579
|
organ_id,
|
|
580
580
|
organ_by,
|
|
@@ -582,22 +582,25 @@ class FileUtil {
|
|
|
582
582
|
date_added, name: reqs[key].originalname || (0, helper_1.getSlug)(32), filename: reqs[key].Key || file.Key || input['filename'], path, mimetype: reqs[key].mimetype, filesize: reqs[key].size, extension: (extension ? "." + extension : ''), type: reqs[key].type || file.type || input['type'], is_hidden,
|
|
583
583
|
tags,
|
|
584
584
|
group });
|
|
585
|
+
if (format) {
|
|
586
|
+
item = yield this.afterQueryFile(item);
|
|
587
|
+
}
|
|
585
588
|
if (use_id) {
|
|
586
|
-
|
|
589
|
+
item['id'] = id;
|
|
587
590
|
}
|
|
588
591
|
if (reqs[key].mimetype && reqs[key].mimetype.split('/')[0] == "image") {
|
|
589
592
|
try {
|
|
590
593
|
let body = reqs[key].Body || reqs[key].buffer;
|
|
591
594
|
let image = yield jimp.read(body);
|
|
592
|
-
|
|
593
|
-
|
|
595
|
+
item['height'] = image.bitmap.height;
|
|
596
|
+
item['width'] = image.bitmap.width;
|
|
594
597
|
}
|
|
595
598
|
catch (err) { }
|
|
596
599
|
}
|
|
597
600
|
if (field.length) {
|
|
598
|
-
|
|
601
|
+
item = _.pick(item, field);
|
|
599
602
|
}
|
|
600
|
-
return
|
|
603
|
+
return item;
|
|
601
604
|
})));
|
|
602
605
|
return result;
|
|
603
606
|
}
|
|
@@ -606,7 +609,7 @@ class FileUtil {
|
|
|
606
609
|
}
|
|
607
610
|
});
|
|
608
611
|
}
|
|
609
|
-
insertFileUnique(results, { thumb = false, width = 0, height = 0 } = {}) {
|
|
612
|
+
insertFileUnique(results, { format = false, thumb = false, width = 0, height = 0 } = {}) {
|
|
610
613
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
611
614
|
try {
|
|
612
615
|
let data = yield file_1.FileModel.schema(this.ref, "_").bulkCreate(results);
|
|
@@ -614,15 +617,14 @@ class FileUtil {
|
|
|
614
617
|
return Promise.reject(errors_1.generalError.BAD_REQUEST);
|
|
615
618
|
}
|
|
616
619
|
let result = data.map(item => item.toJSON());
|
|
617
|
-
if (thumb) {
|
|
618
|
-
// create thumb
|
|
620
|
+
if (format || thumb) {
|
|
621
|
+
// format or create thumb
|
|
619
622
|
result = yield Promise.all(result.map((item) => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
return Object.assign(Object.assign({}, item), { thumb });
|
|
623
|
+
let include = (yield this.afterQueryFile(item)) || {};
|
|
624
|
+
if (thumb && item['type'] == 'i') {
|
|
625
|
+
include['thumb'] = yield this.findImageThumb(item, { width, height });
|
|
624
626
|
}
|
|
625
|
-
return item;
|
|
627
|
+
return Object.assign(Object.assign({}, item), include);
|
|
626
628
|
})));
|
|
627
629
|
}
|
|
628
630
|
return result;
|
|
@@ -630,7 +632,7 @@ class FileUtil {
|
|
|
630
632
|
catch (err) {
|
|
631
633
|
if (err.errors && err.errors[0].validatorKey == "not_unique") {
|
|
632
634
|
results = results.map(item => (Object.assign(Object.assign({}, item), { id: (0, uuid_1.v4)().replace(/-/gi, '').substring(0, 15) })));
|
|
633
|
-
return yield this.insertFileUnique(results, { thumb, width, height });
|
|
635
|
+
return yield this.insertFileUnique(results, { format, thumb, width, height });
|
|
634
636
|
}
|
|
635
637
|
return Promise.reject(errors_1.generalError.BAD_REQUEST);
|
|
636
638
|
}
|
|
@@ -639,7 +641,7 @@ class FileUtil {
|
|
|
639
641
|
uploadRawFormat(files, { field = ['name', 'filename', 'path', 'mimetype', 'filesize', 'extension', 'type', 'height', 'width'] } = {}) {
|
|
640
642
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
641
643
|
let query = yield this.uploadRaw(files);
|
|
642
|
-
return yield this.formatFile(0, 0, files, query, { field });
|
|
644
|
+
return yield this.formatFile(0, 0, files, query, { format: true, field });
|
|
643
645
|
});
|
|
644
646
|
}
|
|
645
647
|
updateFile(id, input = {}, { paths = [] } = {}) {
|
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 = [];
|