@digione/node-custom-api 0.2.0-beta6 → 0.2.0-beta9
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 +2 -1
- package/utils/file.d.ts +6 -0
- package/utils/file.js +29 -3
- package/utils/helper.d.ts +1 -0
- package/utils/helper.js +8 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@digione/node-custom-api",
|
|
3
|
-
"version": "0.2.0-
|
|
3
|
+
"version": "0.2.0-beta9",
|
|
4
4
|
"description": "Typescript node digione-api",
|
|
5
5
|
"author": "Monchai Jirayupong <monchai.j@seven.co.th>",
|
|
6
6
|
"license": "MIT",
|
|
@@ -29,6 +29,7 @@
|
|
|
29
29
|
"moment": "2.30.1",
|
|
30
30
|
"multer": "1.4.5-lts.1",
|
|
31
31
|
"mysql2": "3.9.1",
|
|
32
|
+
"nanoid": "3.3.3",
|
|
32
33
|
"numeral": "2.0.6",
|
|
33
34
|
"php-serialize": "4.1.1",
|
|
34
35
|
"raven": "2.6.4",
|
package/utils/file.d.ts
CHANGED
|
@@ -89,6 +89,12 @@ export declare class FileUtil {
|
|
|
89
89
|
tags?: TagFile;
|
|
90
90
|
group?: any;
|
|
91
91
|
}): Promise<any[]>;
|
|
92
|
+
countFileByFolder(slug: string, { where, parent_folder, tags, group }?: {
|
|
93
|
+
where?: {};
|
|
94
|
+
parent_folder?: string;
|
|
95
|
+
tags?: any[];
|
|
96
|
+
group?: any;
|
|
97
|
+
}): Promise<number>;
|
|
92
98
|
findAndCountAllFileByFolder(slug: string, { where, file_link, parent_folder, limit, offset, tag, tags, group }?: {
|
|
93
99
|
where?: {};
|
|
94
100
|
file_link?: boolean;
|
package/utils/file.js
CHANGED
|
@@ -14,7 +14,6 @@ const aws = require("aws-sdk");
|
|
|
14
14
|
const jimp = require("jimp/dist");
|
|
15
15
|
const mime = require("mime-types");
|
|
16
16
|
const _ = require("lodash");
|
|
17
|
-
const uuid_1 = require("uuid");
|
|
18
17
|
const path = require("path");
|
|
19
18
|
const fs = require("fs");
|
|
20
19
|
const getBuffer = (image, { mimetype = "" } = {}) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
@@ -373,6 +372,33 @@ class FileUtil {
|
|
|
373
372
|
}
|
|
374
373
|
});
|
|
375
374
|
}
|
|
375
|
+
countFileByFolder(slug, { where = {}, parent_folder = "", tags = [], group = null } = {}) {
|
|
376
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
377
|
+
let include_folder = [];
|
|
378
|
+
if (parent_folder) {
|
|
379
|
+
where['$`f->p`.slug$'] = parent_folder;
|
|
380
|
+
include_folder.push({
|
|
381
|
+
required: true, attributes: [],
|
|
382
|
+
model: folder_1.FolderModel.schema(this.ref, "_"),
|
|
383
|
+
association: new sequelize_1.BelongsTo(folder_1.FolderModel, folder_1.FolderModel, { as: "p", foreignKey: "parent_id", constraints: false })
|
|
384
|
+
});
|
|
385
|
+
}
|
|
386
|
+
where['$f.slug$'] = slug;
|
|
387
|
+
where['is_hidden'] = where['is_hidden'] || "no";
|
|
388
|
+
let option = this.beforeFindFile(where, { tags, group, verify: true });
|
|
389
|
+
return yield file_1.FileModel.schema(this.ref, "_").count({
|
|
390
|
+
where: option.where,
|
|
391
|
+
include: [
|
|
392
|
+
{
|
|
393
|
+
required: true, attributes: [],
|
|
394
|
+
model: folder_1.FolderModel.schema(this.ref, "_"),
|
|
395
|
+
association: new sequelize_1.BelongsTo(file_1.FileModel, folder_1.FolderModel, { as: "f", foreignKey: "folder_id", constraints: false }),
|
|
396
|
+
include: include_folder
|
|
397
|
+
}
|
|
398
|
+
]
|
|
399
|
+
});
|
|
400
|
+
});
|
|
401
|
+
}
|
|
376
402
|
findAndCountAllFileByFolder(slug, { where = {}, file_link = false, parent_folder = "", limit = undefined, offset = undefined, tag = {}, tags = [], group = null } = {}) {
|
|
377
403
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
378
404
|
let where_folder = {};
|
|
@@ -583,7 +609,7 @@ class FileUtil {
|
|
|
583
609
|
try {
|
|
584
610
|
let result = yield Promise.all(files.map((file, key) => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
585
611
|
folder_id = reqs[key].folder ? reqs[key].folder : folder_id;
|
|
586
|
-
let id = (0,
|
|
612
|
+
let id = (0, helper_1.getFileId)();
|
|
587
613
|
let organ_id = this.option.organ_id;
|
|
588
614
|
let organ_by = this.option.parent_organ_id;
|
|
589
615
|
let sort = (0, helper_1.getDateTime)().format(formatDateTime);
|
|
@@ -649,7 +675,7 @@ class FileUtil {
|
|
|
649
675
|
}
|
|
650
676
|
catch (err) {
|
|
651
677
|
if (err.errors && err.errors[0].validatorKey == "not_unique") {
|
|
652
|
-
results = results.map(item => (Object.assign(Object.assign({}, item), { id: (0,
|
|
678
|
+
results = results.map(item => (Object.assign(Object.assign({}, item), { id: (0, helper_1.getFileId)() })));
|
|
653
679
|
return yield this.insertFileUnique(results, { format, thumb, width, height });
|
|
654
680
|
}
|
|
655
681
|
return Promise.reject(errors_1.generalError.BAD_REQUEST);
|
package/utils/helper.d.ts
CHANGED
|
@@ -17,6 +17,7 @@ export declare const getENVIndex: (index: string, { prefix, force }?: {
|
|
|
17
17
|
force?: boolean;
|
|
18
18
|
}) => string;
|
|
19
19
|
export declare const getSlug: (length?: number) => string;
|
|
20
|
+
export declare const getFileId: () => string;
|
|
20
21
|
export declare const getDateMysql: (date?: any) => any;
|
|
21
22
|
export declare const getTimestampMysql: (date?: any) => number;
|
|
22
23
|
export declare const getDateTime: (time?: any, { utc }?: {
|
package/utils/helper.js
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.convertCurrency = exports.xorMerge = exports.xorDecode = exports.xorEncode = exports.getInstanceNumber = exports.getDomain = exports.getParent = exports.replaceColon = exports.stripEmoji = exports.stripHtml = exports.slugifyField = exports.slugify = exports.convertToBigEndian = exports.expandTree = exports.buildTree = exports.treeToArray = exports.randomRef = exports.multiExecArray = exports.isBase64 = exports.isNumber = exports.removeAt = exports.removeSpace = exports.formatMobileNumber = exports.getMobileNumber = exports.removeHyphen = exports.signToken = exports.getTokenDataFromTokenBySecret = exports.getUUID32 = exports.getUUID = exports.sleep = exports.getValueByLang = exports.getValueFunctionLang = exports.getValueFunctionArray = exports.getValueFunctionFile = exports.getDateTime = exports.getTimestampMysql = exports.getDateMysql = exports.getSlug = exports.getENVIndex = exports.getENV = exports.Joi_date = exports.getDaysBetweenDates = exports.getDateFromString = exports.getDateRangeFormat = void 0;
|
|
3
|
+
exports.convertCurrency = exports.xorMerge = exports.xorDecode = exports.xorEncode = exports.getInstanceNumber = exports.getDomain = exports.getParent = exports.replaceColon = exports.stripEmoji = exports.stripHtml = exports.slugifyField = exports.slugify = exports.convertToBigEndian = exports.expandTree = exports.buildTree = exports.treeToArray = exports.randomRef = exports.multiExecArray = exports.isBase64 = exports.isNumber = exports.removeAt = exports.removeSpace = exports.formatMobileNumber = exports.getMobileNumber = exports.removeHyphen = exports.signToken = exports.getTokenDataFromTokenBySecret = exports.getUUID32 = exports.getUUID = exports.sleep = exports.getValueByLang = exports.getValueFunctionLang = exports.getValueFunctionArray = exports.getValueFunctionFile = exports.getDateTime = exports.getTimestampMysql = exports.getDateMysql = exports.getFileId = exports.getSlug = exports.getENVIndex = exports.getENV = exports.Joi_date = exports.getDaysBetweenDates = exports.getDateFromString = exports.getDateRangeFormat = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const crypto = require("crypto");
|
|
6
6
|
const dotenv = require("dotenv");
|
|
7
7
|
const moment = require("moment");
|
|
8
8
|
const uuid_1 = require("uuid");
|
|
9
9
|
const short_unique_id_1 = require("short-unique-id");
|
|
10
|
+
const nanoid_1 = require("nanoid");
|
|
10
11
|
const jwt = require("jsonwebtoken");
|
|
11
12
|
const Joi = require("joi");
|
|
12
13
|
const date_1 = require("@joi/date");
|
|
@@ -68,6 +69,12 @@ const getSlug = (length = 8) => {
|
|
|
68
69
|
return new short_unique_id_1.default().randomUUID(length);
|
|
69
70
|
};
|
|
70
71
|
exports.getSlug = getSlug;
|
|
72
|
+
const getFileId = () => {
|
|
73
|
+
const alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
|
|
74
|
+
const nanoid = (0, nanoid_1.customAlphabet)(alphabet, 15);
|
|
75
|
+
return nanoid();
|
|
76
|
+
};
|
|
77
|
+
exports.getFileId = getFileId;
|
|
71
78
|
const getDateMysql = (date = undefined) => {
|
|
72
79
|
try {
|
|
73
80
|
return (0, exports.getDateTime)(date).format("YYYY-MM-DD HH:mm:ss");
|