@digione/node-custom-api 0.1.8-beta1 → 0.1.9-alpha10
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/db.js +4 -4
- package/utils/file.d.ts +10 -6
- package/utils/file.js +33 -27
- package/utils/helper.d.ts +4 -2
- package/utils/helper.js +16 -3
- package/utils/stream.d.ts +25 -5
- package/utils/stream.js +104 -16
- package/utils/user.d.ts +2 -2
- package/utils/user.js +14 -8
- package/utils/validator.d.ts +8 -0
- package/utils/validator.js +15 -1
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/db.js
CHANGED
|
@@ -32,7 +32,7 @@ const getWhereVal = (smth) => {
|
|
|
32
32
|
return [key, value].join(` ${smth.comparator} `);
|
|
33
33
|
};
|
|
34
34
|
const genWhere = (where = {}, { as = "", delimiter = ".", prefix = true, bracket = false } = {}) => {
|
|
35
|
-
as = as ? as + delimiter : as;
|
|
35
|
+
as = as ? "`" + as + "`" + delimiter : as;
|
|
36
36
|
let symbolKeys = Object.getOwnPropertySymbols(where);
|
|
37
37
|
let rawWhere = (Object.keys(where).concat(symbolKeys)).reduce((result, key) => {
|
|
38
38
|
let value = where[key];
|
|
@@ -48,7 +48,7 @@ const genWhere = (where = {}, { as = "", delimiter = ".", prefix = true, bracket
|
|
|
48
48
|
result = `${result}( ${op}) AND `;
|
|
49
49
|
}
|
|
50
50
|
else {
|
|
51
|
-
result =
|
|
51
|
+
result = result + "`" + key + "`" + ` IN (${value.map(i => "'" + i + "'").join(',')}) AND `;
|
|
52
52
|
}
|
|
53
53
|
return result;
|
|
54
54
|
}
|
|
@@ -62,10 +62,10 @@ const genWhere = (where = {}, { as = "", delimiter = ".", prefix = true, bracket
|
|
|
62
62
|
return result;
|
|
63
63
|
}
|
|
64
64
|
else if (typeof value == "object" && value['val']) {
|
|
65
|
-
result =
|
|
65
|
+
result = result + "`" + key + "`" + `=${value['val']} AND `;
|
|
66
66
|
return result;
|
|
67
67
|
}
|
|
68
|
-
result = result + key + "=" + value + " AND ";
|
|
68
|
+
result = result + "`" + key + "`" + "=" + value + " AND ";
|
|
69
69
|
}
|
|
70
70
|
return result;
|
|
71
71
|
}, "");
|
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;
|
|
@@ -146,7 +147,7 @@ export declare class FileUtil {
|
|
|
146
147
|
hidden?: number;
|
|
147
148
|
input?: {};
|
|
148
149
|
}): Promise<any>;
|
|
149
|
-
createFileByPath(files: Array<
|
|
150
|
+
createFileByPath(files: Array<any>, slug: string, user_id: any, { parent_slug, type, name, root, upload, tags, group }?: {
|
|
150
151
|
parent_slug?: string;
|
|
151
152
|
type?: string;
|
|
152
153
|
name?: any;
|
|
@@ -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;
|
|
@@ -169,7 +171,7 @@ export declare class FileUtil {
|
|
|
169
171
|
user_id: any;
|
|
170
172
|
organ_id: any;
|
|
171
173
|
organ_by: any;
|
|
172
|
-
sort:
|
|
174
|
+
sort: any;
|
|
173
175
|
date_added: string;
|
|
174
176
|
name: any;
|
|
175
177
|
filename: any;
|
|
@@ -179,10 +181,12 @@ export declare class FileUtil {
|
|
|
179
181
|
extension: string;
|
|
180
182
|
type: any;
|
|
181
183
|
is_hidden: any;
|
|
182
|
-
tags:
|
|
184
|
+
tags: any;
|
|
185
|
+
custom: any;
|
|
183
186
|
group: any;
|
|
184
187
|
}[]>;
|
|
185
|
-
insertFileUnique(results: Array<any>, { thumb, width, height }?: {
|
|
188
|
+
insertFileUnique(results: Array<any>, { format, thumb, width, height }?: {
|
|
189
|
+
format?: boolean;
|
|
186
190
|
thumb?: boolean;
|
|
187
191
|
width?: number;
|
|
188
192
|
height?: number;
|
package/utils/file.js
CHANGED
|
@@ -133,6 +133,7 @@ class FileUtil {
|
|
|
133
133
|
let reqs = [], results = [];
|
|
134
134
|
for (let file of files) {
|
|
135
135
|
let extension = mime.extension(file.mimetype);
|
|
136
|
+
extension = extension ? extension : String(file.mimetype).split('/')[1];
|
|
136
137
|
let input = {
|
|
137
138
|
Bucket: this.bucket,
|
|
138
139
|
Key: this.ref + "/" + (0, helper_1.getDateTime)().format('X') + '.' + (0, helper_1.getSlug)(32) + '.' + extension,
|
|
@@ -256,7 +257,7 @@ class FileUtil {
|
|
|
256
257
|
result[width + 'x' + height] = thumb;
|
|
257
258
|
yield (0, db_1.update)(this.ref, file_1.FileModel.getTableName().toString(), { thumb: JSON.stringify(result) }, { where: { id: item['id'] } });
|
|
258
259
|
}
|
|
259
|
-
if (item['filename'] == path) {
|
|
260
|
+
if (thumb && item['filename'] == path) {
|
|
260
261
|
yield this.getStorage();
|
|
261
262
|
let data = yield this.afterQueryFile({ filename: thumb, path: thumb });
|
|
262
263
|
thumb = data.path;
|
|
@@ -392,7 +393,7 @@ class FileUtil {
|
|
|
392
393
|
return (yield this.findAllFile({ where: Object.assign({ id }, where), full, file_link, parent_folder, limit: 1, tags, group }))[0] || null;
|
|
393
394
|
});
|
|
394
395
|
}
|
|
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 } = {}) {
|
|
396
|
+
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
397
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
397
398
|
req.files = req.file ? [req.file] : (req.files || []);
|
|
398
399
|
if (req.files.length && slug) {
|
|
@@ -406,6 +407,7 @@ class FileUtil {
|
|
|
406
407
|
let folder = yield this.createFolder(slug, { parent_id, root, name });
|
|
407
408
|
for (let file of req.files) {
|
|
408
409
|
let extension = mime.extension(file.mimetype);
|
|
410
|
+
extension = extension ? extension : String(file.mimetype).split('/')[1];
|
|
409
411
|
let input = {
|
|
410
412
|
Bucket: this.bucket,
|
|
411
413
|
Key: this.ref + "/" + (0, helper_1.getDateTime)().format('X') + '.' + (0, helper_1.getSlug)(32) + '.' + extension,
|
|
@@ -419,7 +421,7 @@ class FileUtil {
|
|
|
419
421
|
}
|
|
420
422
|
let results = yield this.upload(files);
|
|
421
423
|
results = yield this.formatFile(folder['id'], user_id, reqs, results, { input, is_hidden, tags, group });
|
|
422
|
-
return yield this.insertFileUnique(results, { thumb, width, height });
|
|
424
|
+
return yield this.insertFileUnique(results, { format, thumb, width, height });
|
|
423
425
|
}
|
|
424
426
|
return Promise.reject(errors_1.generalError.BAD_REQUEST);
|
|
425
427
|
});
|
|
@@ -470,8 +472,13 @@ class FileUtil {
|
|
|
470
472
|
let folder = yield this.createFolder(slug, { parent_id, root, name });
|
|
471
473
|
let results = [], reqs = [];
|
|
472
474
|
files.forEach((item) => {
|
|
473
|
-
|
|
474
|
-
|
|
475
|
+
let addition = {}, path = item;
|
|
476
|
+
if (typeof item == "object") {
|
|
477
|
+
addition = item;
|
|
478
|
+
path = item['path'];
|
|
479
|
+
}
|
|
480
|
+
results.push({ Location: path, Key: path });
|
|
481
|
+
reqs.push(Object.assign({ originalname: (0, helper_1.getSlug)(32), mimetype: null, size: 0, type }, addition));
|
|
475
482
|
});
|
|
476
483
|
results = yield this.formatFile(folder['id'], user_id, reqs, results, { input, tags, group });
|
|
477
484
|
return yield this.insertFileUnique(results);
|
|
@@ -557,7 +564,7 @@ class FileUtil {
|
|
|
557
564
|
return type;
|
|
558
565
|
});
|
|
559
566
|
}
|
|
560
|
-
formatFile(folder_id, user_id, reqs, files, { use_id = true, field = [], formatDateTime = "X", input = {}, is_hidden = undefined, tags = undefined, group = undefined } = {}) {
|
|
567
|
+
formatFile(folder_id, user_id, reqs, files, { format = false, use_id = true, field = [], formatDateTime = "X", input = {}, is_hidden = undefined, tags = undefined, group = undefined } = {}) {
|
|
561
568
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
562
569
|
try {
|
|
563
570
|
let result = yield Promise.all(files.map((file, key) => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
@@ -574,30 +581,30 @@ class FileUtil {
|
|
|
574
581
|
path = (index < 0) ? protocol + path : path;
|
|
575
582
|
}
|
|
576
583
|
let extension = mime.extension(reqs[key].mimetype);
|
|
577
|
-
|
|
584
|
+
extension = extension ? extension : String(reqs[key].mimetype).split('/')[1];
|
|
585
|
+
let item = Object.assign(Object.assign({}, input), { folder_id,
|
|
578
586
|
user_id,
|
|
579
587
|
organ_id,
|
|
580
|
-
organ_by,
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
group });
|
|
588
|
+
organ_by, sort: reqs[key].sort || sort, 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, tags: reqs[key].tags || tags, custom: reqs[key].custom || input['custom'], group });
|
|
589
|
+
if (format) {
|
|
590
|
+
item = yield this.afterQueryFile(item);
|
|
591
|
+
}
|
|
585
592
|
if (use_id) {
|
|
586
|
-
|
|
593
|
+
item['id'] = id;
|
|
587
594
|
}
|
|
588
595
|
if (reqs[key].mimetype && reqs[key].mimetype.split('/')[0] == "image") {
|
|
589
596
|
try {
|
|
590
597
|
let body = reqs[key].Body || reqs[key].buffer;
|
|
591
598
|
let image = yield jimp.read(body);
|
|
592
|
-
|
|
593
|
-
|
|
599
|
+
item['height'] = image.bitmap.height;
|
|
600
|
+
item['width'] = image.bitmap.width;
|
|
594
601
|
}
|
|
595
602
|
catch (err) { }
|
|
596
603
|
}
|
|
597
604
|
if (field.length) {
|
|
598
|
-
|
|
605
|
+
item = _.pick(item, field);
|
|
599
606
|
}
|
|
600
|
-
return
|
|
607
|
+
return item;
|
|
601
608
|
})));
|
|
602
609
|
return result;
|
|
603
610
|
}
|
|
@@ -606,7 +613,7 @@ class FileUtil {
|
|
|
606
613
|
}
|
|
607
614
|
});
|
|
608
615
|
}
|
|
609
|
-
insertFileUnique(results, { thumb = false, width = 0, height = 0 } = {}) {
|
|
616
|
+
insertFileUnique(results, { format = false, thumb = false, width = 0, height = 0 } = {}) {
|
|
610
617
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
611
618
|
try {
|
|
612
619
|
let data = yield file_1.FileModel.schema(this.ref, "_").bulkCreate(results);
|
|
@@ -614,15 +621,14 @@ class FileUtil {
|
|
|
614
621
|
return Promise.reject(errors_1.generalError.BAD_REQUEST);
|
|
615
622
|
}
|
|
616
623
|
let result = data.map(item => item.toJSON());
|
|
617
|
-
if (thumb) {
|
|
618
|
-
// create thumb
|
|
624
|
+
if (format || thumb) {
|
|
625
|
+
// format or create thumb
|
|
619
626
|
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 });
|
|
627
|
+
let include = (yield this.afterQueryFile(item)) || {};
|
|
628
|
+
if (thumb && item['type'] == 'i') {
|
|
629
|
+
include['thumb'] = yield this.findImageThumb(item, { width, height });
|
|
624
630
|
}
|
|
625
|
-
return item;
|
|
631
|
+
return Object.assign(Object.assign({}, item), include);
|
|
626
632
|
})));
|
|
627
633
|
}
|
|
628
634
|
return result;
|
|
@@ -630,7 +636,7 @@ class FileUtil {
|
|
|
630
636
|
catch (err) {
|
|
631
637
|
if (err.errors && err.errors[0].validatorKey == "not_unique") {
|
|
632
638
|
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 });
|
|
639
|
+
return yield this.insertFileUnique(results, { format, thumb, width, height });
|
|
634
640
|
}
|
|
635
641
|
return Promise.reject(errors_1.generalError.BAD_REQUEST);
|
|
636
642
|
}
|
|
@@ -639,7 +645,7 @@ class FileUtil {
|
|
|
639
645
|
uploadRawFormat(files, { field = ['name', 'filename', 'path', 'mimetype', 'filesize', 'extension', 'type', 'height', 'width'] } = {}) {
|
|
640
646
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
641
647
|
let query = yield this.uploadRaw(files);
|
|
642
|
-
return yield this.formatFile(0, 0, files, query, { field });
|
|
648
|
+
return yield this.formatFile(0, 0, files, query, { format: true, field });
|
|
643
649
|
});
|
|
644
650
|
}
|
|
645
651
|
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 }?: {
|
|
@@ -63,7 +64,7 @@ export declare const randomRef: ({ length_digital, length_alphabet }?: {
|
|
|
63
64
|
length_alphabet?: number;
|
|
64
65
|
}) => string;
|
|
65
66
|
export declare const treeToArray: (items: Array<any>, array?: Array<any>, level?: number) => Promise<any[]>;
|
|
66
|
-
export declare const buildTree: (nodes: Array<any>, { index, field_children, json_convert, key_index, key_parent, root, to_array }?: {
|
|
67
|
+
export declare const buildTree: (nodes: Array<any>, { index, field_children, json_convert, key_index, key_parent, root, to_array, notfound_parent }?: {
|
|
67
68
|
index?: any;
|
|
68
69
|
field_children?: string;
|
|
69
70
|
json_convert?: boolean;
|
|
@@ -71,6 +72,7 @@ export declare const buildTree: (nodes: Array<any>, { index, field_children, jso
|
|
|
71
72
|
key_parent?: string;
|
|
72
73
|
root?: any;
|
|
73
74
|
to_array?: boolean;
|
|
75
|
+
notfound_parent?: boolean;
|
|
74
76
|
}) => Promise<any[]>;
|
|
75
77
|
export declare const expandTree: (items: Array<any>, { array, parent, level, prefix, field_index, field_children, key_value }?: {
|
|
76
78
|
array?: any[];
|
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
|
});
|
|
@@ -220,7 +228,7 @@ const treeToArray = (items, array = [], level = 1) => tslib_1.__awaiter(void 0,
|
|
|
220
228
|
return array;
|
|
221
229
|
});
|
|
222
230
|
exports.treeToArray = treeToArray;
|
|
223
|
-
const buildTree = (nodes, { index = undefined, field_children = "children", json_convert = false, key_index = "id", key_parent = "parent", root = undefined, to_array = false } = {}) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
231
|
+
const buildTree = (nodes, { index = undefined, field_children = "children", json_convert = false, key_index = "id", key_parent = "parent", root = undefined, to_array = false, notfound_parent = false } = {}) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
224
232
|
if (!nodes) {
|
|
225
233
|
return null;
|
|
226
234
|
}
|
|
@@ -258,11 +266,16 @@ const buildTree = (nodes, { index = undefined, field_children = "children", json
|
|
|
258
266
|
}
|
|
259
267
|
}
|
|
260
268
|
parent[field_children] = results;
|
|
269
|
+
delete children[parent[key_index]];
|
|
261
270
|
}
|
|
262
271
|
};
|
|
263
272
|
for (let i = 0, len = roots.length; i < len; ++i) {
|
|
264
273
|
findChildren(roots[i]);
|
|
265
274
|
}
|
|
275
|
+
if (notfound_parent) {
|
|
276
|
+
let items = Object.keys(children).reduce((total, key) => total.concat(children[key]), []);
|
|
277
|
+
roots.unshift({ [key_index]: -1, [field_children]: items });
|
|
278
|
+
}
|
|
266
279
|
if (index)
|
|
267
280
|
roots = roots[0];
|
|
268
281
|
if (roots && to_array) {
|
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 {
|
|
@@ -36,7 +40,7 @@ export declare class StreamUtil {
|
|
|
36
40
|
private fileUtil;
|
|
37
41
|
private languageUtil;
|
|
38
42
|
constructor(ref?: string, option?: QueryParamOption, fileUtil?: FileUtil);
|
|
39
|
-
findField(slug: string, namespace: string, { index, option, no_lang, field_slug, field_only, field_required, lang, lang_code, is_required, default_value, addition, include, include_only, convert_option, field_option, require, multiple_table, multiple_spread, text, bullets, multiple, relationship, file, image, field_exclude, section }?: {
|
|
43
|
+
findField(slug: string, namespace: string, { index, option, no_lang, field_slug, field_only, field_required, lang, lang_code, is_required, default_value, addition, include, include_only, convert_option, convert_value, field_option, require, multiple_table, multiple_spread, text, bullets, multiple, relationship, file, image, field_exclude, section }?: {
|
|
40
44
|
index?: string;
|
|
41
45
|
option?: {};
|
|
42
46
|
no_lang?: boolean;
|
|
@@ -51,6 +55,7 @@ export declare class StreamUtil {
|
|
|
51
55
|
include?: any;
|
|
52
56
|
include_only?: boolean;
|
|
53
57
|
convert_option?: boolean;
|
|
58
|
+
convert_value?: boolean;
|
|
54
59
|
field_option?: {};
|
|
55
60
|
require?: boolean;
|
|
56
61
|
multiple_table?: boolean;
|
|
@@ -71,14 +76,16 @@ export declare class StreamUtil {
|
|
|
71
76
|
include?: any;
|
|
72
77
|
include_only?: boolean;
|
|
73
78
|
}): any;
|
|
74
|
-
buildStream(slug: string, namespace: string, { query, builder, fetch, attribute, attributes, field_exclude, include }?: {
|
|
79
|
+
buildStream(slug: string, namespace: string, { query, builder, fetch, label, attribute, attributes, field_exclude, include, include_all }?: {
|
|
75
80
|
query?: boolean;
|
|
76
81
|
builder?: boolean;
|
|
77
82
|
fetch?: boolean;
|
|
83
|
+
label?: boolean;
|
|
78
84
|
attribute?: boolean;
|
|
79
85
|
attributes?: any;
|
|
80
86
|
field_exclude?: any[];
|
|
81
87
|
include?: {};
|
|
88
|
+
include_all?: boolean;
|
|
82
89
|
}): Promise<{
|
|
83
90
|
stream: any;
|
|
84
91
|
fields: any;
|
|
@@ -99,7 +106,19 @@ export declare class StreamUtil {
|
|
|
99
106
|
raw?: boolean;
|
|
100
107
|
lang_code?: any;
|
|
101
108
|
}): Promise<{}>;
|
|
102
|
-
|
|
109
|
+
getValueByJson(slug: string, namespace: string, value: any, json: any, { query, lang_code }?: {
|
|
110
|
+
query?: boolean;
|
|
111
|
+
lang_code?: any;
|
|
112
|
+
}): Promise<{}>;
|
|
113
|
+
getStoreJson(slug: string, namespace: string, value: any, { query, lang_code, exclude_type }?: {
|
|
114
|
+
query?: boolean;
|
|
115
|
+
lang_code?: any;
|
|
116
|
+
exclude_type?: {};
|
|
117
|
+
}): Promise<{
|
|
118
|
+
result: {};
|
|
119
|
+
labels: any[];
|
|
120
|
+
}>;
|
|
121
|
+
genField(streams: Array<any>, { index, option, slug, id_stream, prefix, multiple_table, multiple_spread, addition, convert_option, convert_value, field_option, default_value, default_lang, lang_code, no_lang, lang, country, section }?: {
|
|
103
122
|
index?: string;
|
|
104
123
|
option?: {};
|
|
105
124
|
slug?: string;
|
|
@@ -109,6 +128,7 @@ export declare class StreamUtil {
|
|
|
109
128
|
multiple_spread?: boolean;
|
|
110
129
|
addition?: {};
|
|
111
130
|
convert_option?: boolean;
|
|
131
|
+
convert_value?: boolean;
|
|
112
132
|
field_option?: {};
|
|
113
133
|
default_value?: any;
|
|
114
134
|
default_lang?: string;
|
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
|
}
|
|
@@ -77,7 +101,7 @@ class StreamUtil {
|
|
|
77
101
|
this.fileUtil = fileUtil || new file_2.FileUtil(this.ref, this.option);
|
|
78
102
|
this.languageUtil = new language_1.LanguageUtil(this.ref, this.option);
|
|
79
103
|
}
|
|
80
|
-
findField(slug, namespace, { index = "", option = {}, no_lang = false, field_slug = [], field_only = true, field_required = true, lang = [], lang_code = "en", is_required = "", default_value = {}, addition = {}, include = undefined, include_only = false, convert_option = false, field_option = {}, require = false, multiple_table = false, multiple_spread = false, text = false, bullets = false, multiple = false, relationship = false, file = false, image = false, field_exclude = [], section = false } = {}) {
|
|
104
|
+
findField(slug, namespace, { index = "", option = {}, no_lang = false, field_slug = [], field_only = true, field_required = true, lang = [], lang_code = "en", is_required = "", default_value = {}, addition = {}, include = undefined, include_only = false, convert_option = false, convert_value = false, field_option = {}, require = false, multiple_table = false, multiple_spread = false, text = false, bullets = false, multiple = false, relationship = false, file = false, image = false, field_exclude = [], section = false } = {}) {
|
|
81
105
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
82
106
|
let data;
|
|
83
107
|
let where = {};
|
|
@@ -160,7 +184,7 @@ class StreamUtil {
|
|
|
160
184
|
}
|
|
161
185
|
}
|
|
162
186
|
if (convert_option) {
|
|
163
|
-
data['fields'] = yield this.genField(data['fields'], { index, option, slug, id_stream: data['id'], prefix: data['stream_prefix'], multiple_table, multiple_spread, addition, field_option, default_value, lang_code, no_lang, lang, section });
|
|
187
|
+
data['fields'] = yield this.genField(data['fields'], { index, option, slug, id_stream: data['id'], prefix: data['stream_prefix'], multiple_table, multiple_spread, addition, convert_value, field_option, default_value, lang_code, no_lang, lang, section });
|
|
164
188
|
}
|
|
165
189
|
if (field_only) {
|
|
166
190
|
return data['fields'];
|
|
@@ -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,7 +320,34 @@ class StreamUtil {
|
|
|
289
320
|
return result;
|
|
290
321
|
});
|
|
291
322
|
}
|
|
292
|
-
|
|
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
|
+
}
|
|
350
|
+
genField(streams, { index = "", option = {}, slug = "", id_stream = "", prefix = "", multiple_table = false, multiple_spread = false, addition = {}, convert_option = true, convert_value = false, 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 = [];
|
|
295
353
|
let exclude = option['excludeObj'] || {};
|
|
@@ -414,7 +472,9 @@ class StreamUtil {
|
|
|
414
472
|
continue;
|
|
415
473
|
}
|
|
416
474
|
if (convert_option) {
|
|
475
|
+
let obj_value = {};
|
|
417
476
|
if (item['field_type'] == "choice") {
|
|
477
|
+
let opt_empty = false;
|
|
418
478
|
if (field_data['choice_data']) {
|
|
419
479
|
let data = [];
|
|
420
480
|
data = field_data['choice_data'].split('\n');
|
|
@@ -437,12 +497,16 @@ class StreamUtil {
|
|
|
437
497
|
data[k] = { key, value };
|
|
438
498
|
}
|
|
439
499
|
else {
|
|
500
|
+
opt_empty = true;
|
|
440
501
|
data[k] = { key: '', value };
|
|
441
502
|
}
|
|
442
503
|
}
|
|
443
504
|
else {
|
|
444
505
|
data[k] = { key: v, value: v };
|
|
445
506
|
}
|
|
507
|
+
if (convert_value && data[k]) {
|
|
508
|
+
obj_value[data[k]['key']] = data[k]['value'];
|
|
509
|
+
}
|
|
446
510
|
});
|
|
447
511
|
item['data'] = data;
|
|
448
512
|
}
|
|
@@ -452,9 +516,23 @@ class StreamUtil {
|
|
|
452
516
|
if (value && value.indexOf('lang:') > -1) {
|
|
453
517
|
item['value'] = (0, i18n_1.__)({ phrase: value, locale: lang_code });
|
|
454
518
|
}
|
|
519
|
+
if (!item['key'])
|
|
520
|
+
opt_empty = true;
|
|
521
|
+
if (convert_value && item['key']) {
|
|
522
|
+
obj_value[item['key']] = item['value'];
|
|
523
|
+
}
|
|
455
524
|
return item;
|
|
456
525
|
});
|
|
457
526
|
}
|
|
527
|
+
if (field_data['default_value'] && !opt_empty && (item['field_value'] == '' || item['field_value'] == null)) {
|
|
528
|
+
item['field_value'] = field_data['default_value'];
|
|
529
|
+
}
|
|
530
|
+
if (convert_value && typeof item['field_value'] != "undefined") {
|
|
531
|
+
let field_value = item['field_value'];
|
|
532
|
+
if (item['field_value'] == null && opt_empty)
|
|
533
|
+
field_value = '';
|
|
534
|
+
field_data['value'] = obj_value[field_value];
|
|
535
|
+
}
|
|
458
536
|
}
|
|
459
537
|
else if (!field_option[item['field_slug']] && (item['field_type'] == "relationship" || item['field_type'] == "multiple") && field_data['choose_stream']) {
|
|
460
538
|
try {
|
|
@@ -499,6 +577,9 @@ class StreamUtil {
|
|
|
499
577
|
item['title'] = item['title'] ? item['title'] : item[stream['title_column']];
|
|
500
578
|
(0, helper_2.getValueFunctionLang)('title')(item, { result: item, lang_code });
|
|
501
579
|
let value = item['title'] ? item['title'] : item['id'];
|
|
580
|
+
if (convert_value && item['id']) {
|
|
581
|
+
obj_value[item['id']] = value;
|
|
582
|
+
}
|
|
502
583
|
return {
|
|
503
584
|
key: item['id'],
|
|
504
585
|
value
|
|
@@ -509,6 +590,9 @@ class StreamUtil {
|
|
|
509
590
|
}
|
|
510
591
|
}
|
|
511
592
|
item['data'] = data;
|
|
593
|
+
if (convert_value && item['field_value']) {
|
|
594
|
+
field_data['value'] = obj_value[item['field_value']];
|
|
595
|
+
}
|
|
512
596
|
}
|
|
513
597
|
catch (err) { }
|
|
514
598
|
}
|
|
@@ -1578,8 +1662,10 @@ class StreamUtil {
|
|
|
1578
1662
|
}
|
|
1579
1663
|
}
|
|
1580
1664
|
}
|
|
1581
|
-
|
|
1582
|
-
|
|
1665
|
+
if (typeof field['sort_order'] == "undefined") {
|
|
1666
|
+
let sort_order = yield field_1.FieldModel.schema(this.ref, "_").max('sort_order', { where: { stream_id: stream['id'] } });
|
|
1667
|
+
field['sort_order'] = sort_order ? Number(sort_order + 1) : 1;
|
|
1668
|
+
}
|
|
1583
1669
|
if (!field['stream_id']) {
|
|
1584
1670
|
field['stream_id'] = stream['id'];
|
|
1585
1671
|
}
|
|
@@ -1839,11 +1925,13 @@ class StreamUtil {
|
|
|
1839
1925
|
allow_type = new RegExp(/^(image.*)$/).test(file[field_slug]['mimetype']);
|
|
1840
1926
|
if (!allow_type) {
|
|
1841
1927
|
input[field_slug] = mime.extension(file[field_slug]['mimetype']);
|
|
1928
|
+
input[field_slug] = input[field_slug] ? input[field_slug] : String(file[field_slug]['mimetype']).split('/')[1];
|
|
1842
1929
|
field = Joi.string().valid('image/*');
|
|
1843
1930
|
}
|
|
1844
1931
|
}
|
|
1845
1932
|
if (!allow_type && field_data['allowed_types']) {
|
|
1846
1933
|
let extension = String(mime.extension(file[field_slug]['mimetype']));
|
|
1934
|
+
extension = extension ? extension : String(file[field_slug]['mimetype']).split('/')[1];
|
|
1847
1935
|
if (!new RegExp(`^(${field_data['allowed_types']})$`).test(extension)) {
|
|
1848
1936
|
input[field_slug] = extension;
|
|
1849
1937
|
field = Joi.string().valid(...(field_data['allowed_types'].split('|') || []));
|
package/utils/user.d.ts
CHANGED
|
@@ -40,9 +40,9 @@ export declare const convertAddress: (data: any, { lang_code, transform }?: {
|
|
|
40
40
|
lang_code?: string;
|
|
41
41
|
transform?: boolean;
|
|
42
42
|
}) => Promise<any>;
|
|
43
|
-
export declare const getAddressIndex: (data: any, { condition,
|
|
43
|
+
export declare const getAddressIndex: (data: any, { condition, where }?: {
|
|
44
44
|
condition?: {};
|
|
45
|
-
|
|
45
|
+
where?: {};
|
|
46
46
|
}) => Promise<{}>;
|
|
47
47
|
export declare const getCountry: (ref: string, { organ_id, lang_code, setting }?: {
|
|
48
48
|
organ_id?: string;
|
package/utils/user.js
CHANGED
|
@@ -229,12 +229,11 @@ const convertAddress = (data, { lang_code = "en", transform = false } = {}) => t
|
|
|
229
229
|
return data;
|
|
230
230
|
});
|
|
231
231
|
exports.convertAddress = convertAddress;
|
|
232
|
-
const getAddressIndex = (data, { condition = {},
|
|
233
|
-
let result = {},
|
|
234
|
-
let order = [sequelize.literal(`FIELD(lang_code,${'\'' + where['lang_code'].join('\',\'') + '\''})`)];
|
|
232
|
+
const getAddressIndex = (data, { condition = {}, where = {} } = {}) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
233
|
+
let result = {}, bol = false;
|
|
235
234
|
if (!bol && data['country'] && !condition['country_id']) {
|
|
236
235
|
let country = yield country_1.CountryModel.schema("core", "_").findOne({
|
|
237
|
-
raw: true, where: Object.assign(Object.assign({}, where), { country_name: data['country'] }), attributes: ['id']
|
|
236
|
+
raw: true, where: Object.assign(Object.assign({}, where), { country_name: data['country'] }), attributes: ['id']
|
|
238
237
|
});
|
|
239
238
|
if (country) {
|
|
240
239
|
result['country_id'] = country['id'];
|
|
@@ -245,7 +244,7 @@ const getAddressIndex = (data, { condition = {}, lang_code = "en" } = {}) => tsl
|
|
|
245
244
|
if (!bol && data['state'] && !condition['state_id']) {
|
|
246
245
|
let country_id = condition['country_id'] || null;
|
|
247
246
|
let state = yield state_1.StateModel.schema("core", "_").findOne({
|
|
248
|
-
raw: true, where: Object.assign(Object.assign({}, where), { country_id, state_name: data['state'] }), attributes: ['id']
|
|
247
|
+
raw: true, where: Object.assign(Object.assign({}, where), { country_id, state_name: data['state'] }), attributes: ['id']
|
|
249
248
|
});
|
|
250
249
|
if (state) {
|
|
251
250
|
result['state_id'] = state['id'];
|
|
@@ -256,7 +255,7 @@ const getAddressIndex = (data, { condition = {}, lang_code = "en" } = {}) => tsl
|
|
|
256
255
|
if (!bol && data['city'] && !condition['city_id']) {
|
|
257
256
|
let state_id = condition['state_id'] || null;
|
|
258
257
|
let city = yield city_1.CityModel.schema("core", "_").findOne({
|
|
259
|
-
raw: true, where: Object.assign(Object.assign({}, where), { state_id, city_name: data['city'] }), attributes: ['id']
|
|
258
|
+
raw: true, where: Object.assign(Object.assign({}, where), { state_id, city_name: data['city'] }), attributes: ['id']
|
|
260
259
|
});
|
|
261
260
|
if (city) {
|
|
262
261
|
result['city_id'] = city['id'];
|
|
@@ -267,7 +266,7 @@ const getAddressIndex = (data, { condition = {}, lang_code = "en" } = {}) => tsl
|
|
|
267
266
|
if (!bol && data['district']) {
|
|
268
267
|
let city_id = condition['city_id'] || null;
|
|
269
268
|
let district = yield district_1.DistrictModel.schema("core", "_").findOne({
|
|
270
|
-
raw: true, where: Object.assign(Object.assign({}, where), { city_id, district_name: data['district'] }), attributes: ['id']
|
|
269
|
+
raw: true, where: Object.assign(Object.assign({}, where), { city_id, district_name: data['district'] }), attributes: ['id']
|
|
271
270
|
});
|
|
272
271
|
if (district)
|
|
273
272
|
result['district_id'] = district['id'];
|
|
@@ -277,7 +276,14 @@ const getAddressIndex = (data, { condition = {}, lang_code = "en" } = {}) => tsl
|
|
|
277
276
|
exports.getAddressIndex = getAddressIndex;
|
|
278
277
|
const getCountry = (ref, { organ_id = "", lang_code = "en", setting = {} } = {}) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
279
278
|
let where = { status: 1, lang_code }, default_country;
|
|
280
|
-
if (
|
|
279
|
+
if (organ_id) {
|
|
280
|
+
let query = yield organ_1.UserOrganModel.schema(ref, "_").findOne({ where: { id: organ_id }, attributes: ['setting'], raw: true });
|
|
281
|
+
setting = query ? (query['setting'] || {}) : {};
|
|
282
|
+
}
|
|
283
|
+
if (setting['mobile_code']) {
|
|
284
|
+
where['mobilecode'] = setting['mobile_code'].split(",");
|
|
285
|
+
}
|
|
286
|
+
else if (setting['country_id']) {
|
|
281
287
|
where['id'] = setting['country_id'].split(",");
|
|
282
288
|
}
|
|
283
289
|
let data = yield country_1.CountryModel.schema("core", "_").findAll({
|
package/utils/validator.d.ts
CHANGED
|
@@ -57,5 +57,13 @@ export declare const convertService: ({ convert_type, schema }?: {
|
|
|
57
57
|
convert_type?: any[];
|
|
58
58
|
schema?: {};
|
|
59
59
|
}) => (req: any, res: any, next: any) => Promise<any>;
|
|
60
|
+
export declare const entryValidateService: ({ module, schema }?: {
|
|
61
|
+
module?: string[];
|
|
62
|
+
schema?: {};
|
|
63
|
+
}) => (req: any, res: any, next: any) => Promise<any>;
|
|
64
|
+
export declare const entryParamService: ({ module, schema }?: {
|
|
65
|
+
module?: string[];
|
|
66
|
+
schema?: {};
|
|
67
|
+
}) => (req: any, res: any, next: any) => Promise<any>;
|
|
60
68
|
export declare const createdByValidate: (req: any, res: any, next: any) => Promise<any>;
|
|
61
69
|
export {};
|
package/utils/validator.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createdByValidate = exports.convertService = exports.fieldService = exports.dataService = exports.printService = exports.exportService = exports.importService = exports.streamService = exports.multiService = exports.fileService = exports.paramService = exports.validateService = exports.validate = void 0;
|
|
3
|
+
exports.createdByValidate = exports.entryParamService = exports.entryValidateService = exports.convertService = exports.fieldService = exports.dataService = exports.printService = exports.exportService = exports.importService = exports.streamService = exports.multiService = exports.fileService = exports.paramService = exports.validateService = exports.validate = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const Joi = require("joi");
|
|
6
6
|
const errors_1 = require("../errors");
|
|
@@ -291,6 +291,20 @@ const convertService = ({ convert_type = [], schema = {} } = {}) => (req, res, n
|
|
|
291
291
|
return (0, exports.validateService)(Joi.object().keys(Object.assign({ ids: Joi.array().items(Joi.number()).min(1), convert_type: Joi.string().valid(...convert_type) }, schema)).unknown())(req, res, next);
|
|
292
292
|
});
|
|
293
293
|
exports.convertService = convertService;
|
|
294
|
+
const entryValidateService = ({ module = ['contact'], schema = {} } = {}) => (req, res, next) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
295
|
+
return (0, exports.validateService)(Joi.object().keys(Object.assign({ module: Joi.string().valid(...module), entry_id: Joi.number().required() }, schema)).unknown())(req, res, next);
|
|
296
|
+
});
|
|
297
|
+
exports.entryValidateService = entryValidateService;
|
|
298
|
+
const entryParamService = ({ module = ['contact'], schema = {} } = {}) => (req, res, next) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
299
|
+
if (req.query.module) {
|
|
300
|
+
res.locals.option = Object.assign(Object.assign({}, (res.locals.option || {})), { module: req.query.module });
|
|
301
|
+
}
|
|
302
|
+
if (req.query.entry_id) {
|
|
303
|
+
res.locals.option = Object.assign(Object.assign({}, (res.locals.option || {})), { entry_id: req.query.entry_id });
|
|
304
|
+
}
|
|
305
|
+
return (0, exports.paramService)(Joi.object().keys(Object.assign({ module: Joi.string().valid(...module), entry_id: Joi.number().required() }, schema)).unknown())(req, res, next);
|
|
306
|
+
});
|
|
307
|
+
exports.entryParamService = entryParamService;
|
|
294
308
|
exports.createdByValidate = (0, exports.validateService)(Joi.object().keys({
|
|
295
309
|
created_by: Joi.alternatives().try(Joi.string(), Joi.number()).required()
|
|
296
310
|
}).unknown());
|