@minimaltech/node-infra 0.3.22 → 0.3.24
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/dist/base/applications/base.application.d.ts +4 -2
- package/dist/base/applications/base.application.js +8 -2
- package/dist/base/applications/base.application.js.map +1 -1
- package/dist/base/applications/default.application.d.ts +0 -3
- package/dist/base/applications/default.application.js.map +1 -1
- package/dist/base/controllers/relational.controller.js +1 -1
- package/dist/base/controllers/relational.controller.js.map +1 -1
- package/dist/base/datasources/base.datasource.d.ts +11 -0
- package/dist/base/datasources/base.datasource.js +19 -0
- package/dist/base/datasources/base.datasource.js.map +1 -0
- package/dist/base/datasources/index.d.ts +2 -0
- package/dist/base/datasources/index.js +19 -0
- package/dist/base/datasources/index.js.map +1 -0
- package/dist/base/datasources/types.d.ts +4 -0
- package/dist/base/datasources/types.js +3 -0
- package/dist/base/datasources/types.js.map +1 -0
- package/dist/base/index.d.ts +1 -1
- package/dist/base/index.js +1 -1
- package/dist/base/index.js.map +1 -1
- package/dist/base/repositories/base.repository.js.map +1 -1
- package/dist/base/repositories/index.d.ts +1 -1
- package/dist/base/repositories/index.js +1 -1
- package/dist/base/repositories/index.js.map +1 -1
- package/dist/base/repositories/relations/has-many-polymorphic/decorator.d.ts +1 -1
- package/dist/base/repositories/relations/has-many-polymorphic/decorator.js +1 -1
- package/dist/base/repositories/relations/has-many-polymorphic/index.d.ts +2 -2
- package/dist/base/repositories/relations/has-many-polymorphic/index.js +2 -2
- package/dist/base/repositories/relations/has-many-polymorphic/index.js.map +1 -1
- package/dist/base/repositories/searchable-tz-crud.repository.d.ts +17 -4
- package/dist/base/repositories/searchable-tz-crud.repository.js +76 -20
- package/dist/base/repositories/searchable-tz-crud.repository.js.map +1 -1
- package/dist/base/repositories/tz-crud.repository.d.ts +14 -0
- package/dist/base/repositories/tz-crud.repository.js +24 -0
- package/dist/base/repositories/tz-crud.repository.js.map +1 -1
- package/dist/common/constants.d.ts +40 -5
- package/dist/common/constants.js +58 -9
- package/dist/common/constants.js.map +1 -1
- package/dist/common/environments.d.ts +9 -0
- package/dist/common/environments.js +11 -1
- package/dist/common/environments.js.map +1 -1
- package/dist/common/types.d.ts +18 -3
- package/dist/components/authenticate/models/oauth2-client.model.js +3 -0
- package/dist/components/authenticate/models/oauth2-client.model.js.map +1 -1
- package/dist/components/authenticate/repositories/oauth2.repository.d.ts +1 -1
- package/dist/components/authenticate/repositories/oauth2.repository.js +4 -4
- package/dist/components/authenticate/repositories/oauth2.repository.js.map +1 -1
- package/dist/components/authorize/adapters/adapter-builder.d.ts +1 -1
- package/dist/components/authorize/adapters/base.adapter.d.ts +1 -1
- package/dist/components/authorize/adapters/casbin-postgres-adapter.helper.d.ts +1 -1
- package/dist/components/authorize/adapters/casbin-redis-adapter.helper.d.ts +1 -1
- package/dist/components/authorize/migrations/0000-create-view-policy.js +5 -5
- package/dist/components/authorize/migrations/0000-create-view-policy.js.map +1 -1
- package/dist/components/authorize/repositories/authorize.repository.d.ts +1 -1
- package/dist/components/authorize/repositories/authorize.repository.js +6 -6
- package/dist/components/authorize/repositories/authorize.repository.js.map +1 -1
- package/dist/components/authorize/services/enforcer.service.d.ts +1 -1
- package/dist/components/authorize/services/enforcer.service.js +2 -2
- package/dist/components/authorize/services/enforcer.service.js.map +1 -1
- package/dist/components/crash-report/common/keys.d.ts +1 -1
- package/dist/components/crash-report/common/keys.js +2 -2
- package/dist/components/crash-report/common/keys.js.map +1 -1
- package/dist/components/crash-report/component.js +1 -1
- package/dist/components/crash-report/component.js.map +1 -1
- package/dist/components/crash-report/providers/third-parties/base.d.ts +0 -1
- package/dist/components/crash-report/providers/third-parties/base.js.map +1 -1
- package/dist/components/grpc/helpers/grpc-server.js.map +1 -1
- package/dist/components/migration/repositories/migration.repository.d.ts +1 -1
- package/dist/components/migration/repositories/migration.repository.js +2 -2
- package/dist/components/migration/repositories/migration.repository.js.map +1 -1
- package/dist/components/socket-io/helpers/socket-io-server.helper.js +1 -7
- package/dist/components/socket-io/helpers/socket-io-server.helper.js.map +1 -1
- package/dist/datasources/index.d.ts +3 -2
- package/dist/datasources/index.js +3 -2
- package/dist/datasources/index.js.map +1 -1
- package/dist/datasources/kvmem/datasource.d.ts +5 -0
- package/dist/datasources/{kvmem.datasource.js → kvmem/datasource.js} +10 -10
- package/dist/datasources/kvmem/datasource.js.map +1 -0
- package/dist/datasources/kvmem/index.d.ts +1 -0
- package/dist/datasources/kvmem/index.js +18 -0
- package/dist/datasources/kvmem/index.js.map +1 -0
- package/dist/datasources/postgres/datasource.d.ts +7 -0
- package/dist/datasources/{postgres.datasource.js → postgres/datasource.js} +22 -21
- package/dist/datasources/postgres/datasource.js.map +1 -0
- package/dist/datasources/postgres/index.d.ts +2 -0
- package/dist/datasources/postgres/index.js +19 -0
- package/dist/datasources/postgres/index.js.map +1 -0
- package/dist/datasources/postgres/types.d.ts +9 -0
- package/dist/datasources/postgres/types.js +3 -0
- package/dist/datasources/postgres/types.js.map +1 -0
- package/dist/datasources/redis/connector.d.ts +36 -0
- package/dist/datasources/redis/connector.js +128 -0
- package/dist/datasources/redis/connector.js.map +1 -0
- package/dist/datasources/redis/datasource.d.ts +9 -0
- package/dist/datasources/redis/datasource.js +48 -0
- package/dist/datasources/redis/datasource.js.map +1 -0
- package/dist/datasources/redis/index.d.ts +3 -0
- package/dist/datasources/redis/index.js +20 -0
- package/dist/datasources/redis/index.js.map +1 -0
- package/dist/datasources/redis/types.d.ts +10 -0
- package/dist/datasources/redis/types.js +3 -0
- package/dist/datasources/redis/types.js.map +1 -0
- package/dist/helpers/application-environment.helper.d.ts +1 -0
- package/dist/helpers/application-environment.helper.js +3 -0
- package/dist/helpers/application-environment.helper.js.map +1 -1
- package/dist/helpers/logger/default-logger.d.ts +21 -8
- package/dist/helpers/logger/default-logger.js +102 -30
- package/dist/helpers/logger/default-logger.js.map +1 -1
- package/dist/helpers/logger/index.d.ts +2 -1
- package/dist/helpers/logger/index.js +2 -1
- package/dist/helpers/logger/index.js.map +1 -1
- package/dist/helpers/logger/transports/dgram.transport.d.ts +28 -0
- package/dist/helpers/logger/transports/dgram.transport.js +84 -0
- package/dist/helpers/logger/transports/dgram.transport.js.map +1 -0
- package/dist/helpers/logger/transports/index.d.ts +1 -0
- package/dist/helpers/logger/transports/index.js +18 -0
- package/dist/helpers/logger/transports/index.js.map +1 -0
- package/dist/helpers/queue/queue.helper.d.ts +0 -1
- package/dist/helpers/queue/queue.helper.js.map +1 -1
- package/dist/helpers/redis.helper.d.ts +118 -42
- package/dist/helpers/redis.helper.js +163 -62
- package/dist/helpers/redis.helper.js.map +1 -1
- package/dist/tsconfig.base.json +19 -8
- package/dist/utilities/date.utility.d.ts +7 -3
- package/dist/utilities/date.utility.js +28 -10
- package/dist/utilities/date.utility.js.map +1 -1
- package/dist/utilities/index.d.ts +1 -0
- package/dist/utilities/index.js +1 -0
- package/dist/utilities/index.js.map +1 -1
- package/dist/utilities/query.utility.d.ts +30 -0
- package/dist/utilities/query.utility.js +143 -0
- package/dist/utilities/query.utility.js.map +1 -0
- package/package.json +3 -3
- package/dist/base/base.datasource.d.ts +0 -9
- package/dist/base/base.datasource.js +0 -13
- package/dist/base/base.datasource.js.map +0 -1
- package/dist/datasources/kvmem.datasource.d.ts +0 -9
- package/dist/datasources/kvmem.datasource.js.map +0 -1
- package/dist/datasources/postgres.datasource.d.ts +0 -14
- package/dist/datasources/postgres.datasource.js.map +0 -1
@@ -30,20 +30,38 @@ const isWeekday = (date) => {
|
|
30
30
|
return isoWeekday > 0 && isoWeekday < 6;
|
31
31
|
};
|
32
32
|
exports.isWeekday = isWeekday;
|
33
|
-
const getPreviousWeekday = () => {
|
34
|
-
|
35
|
-
|
36
|
-
|
33
|
+
/* export const getPreviousWeekday = () => {
|
34
|
+
let date = dayjs();
|
35
|
+
while (!isWeekday(date)) {
|
36
|
+
date = date.subtract(1, 'day');
|
37
|
+
}
|
38
|
+
|
39
|
+
return date;
|
40
|
+
}; */
|
41
|
+
const getPreviousWeekday = (opts) => {
|
42
|
+
const { date } = opts !== null && opts !== void 0 ? opts : { date: (0, dayjs_1.default)() };
|
43
|
+
let rs = (0, dayjs_1.default)(date).clone().subtract(1, 'day');
|
44
|
+
while (!(0, exports.isWeekday)(rs.toISOString())) {
|
45
|
+
rs = rs.subtract(1, 'day');
|
37
46
|
}
|
38
|
-
return
|
47
|
+
return rs;
|
39
48
|
};
|
40
49
|
exports.getPreviousWeekday = getPreviousWeekday;
|
41
|
-
const getNextWeekday = () => {
|
42
|
-
|
43
|
-
|
44
|
-
|
50
|
+
/* export const getNextWeekday = () => {
|
51
|
+
let date = dayjs();
|
52
|
+
while (!isWeekday(date)) {
|
53
|
+
date = date.add(1, 'day');
|
54
|
+
}
|
55
|
+
|
56
|
+
return date;
|
57
|
+
}; */
|
58
|
+
const getNextWeekday = (opts) => {
|
59
|
+
const { date } = opts !== null && opts !== void 0 ? opts : { date: (0, dayjs_1.default)() };
|
60
|
+
let rs = (0, dayjs_1.default)(date).clone().add(1, 'day');
|
61
|
+
while (!(0, exports.isWeekday)(rs.toISOString())) {
|
62
|
+
rs = rs.add(1, 'day');
|
45
63
|
}
|
46
|
-
return
|
64
|
+
return rs;
|
47
65
|
};
|
48
66
|
exports.getNextWeekday = getNextWeekday;
|
49
67
|
const getDateTz = (opts) => {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"date.utility.js","sourceRoot":"","sources":["../../src/utilities/date.utility.ts"],"names":[],"mappings":";;;;;;;AAAA,kDAA0B;
|
1
|
+
{"version":3,"file":"date.utility.js","sourceRoot":"","sources":["../../src/utilities/date.utility.ts"],"names":[],"mappings":";;;;;;;AAAA,kDAA0B;AAkFjB,gBAlFF,eAAK,CAkFE;AAhFd,uFAAqE;AACrE,mEAAiD;AACjD,qEAAmD;AACnD,2DAAyC;AACzC,mEAAiD;AACjD,mDAAwC;AAExC,eAAK,CAAC,MAAM,CAAC,2BAAuB,CAAC,CAAC;AACtC,eAAK,CAAC,MAAM,CAAC,aAAS,CAAC,CAAC;AACxB,eAAK,CAAC,MAAM,CAAC,kBAAc,CAAC,CAAC;AAC7B,eAAK,CAAC,MAAM,CAAC,iBAAa,CAAC,CAAC;AAC5B,eAAK,CAAC,MAAM,CAAC,iBAAa,CAAC,CAAC;AAE5B,MAAM,EAAE,GAAG,MAAA,OAAO,CAAC,GAAG,CAAC,4BAA4B,mCAAI,kBAAkB,CAAC;AAC1E,eAAK,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;AAEjB,MAAM,KAAK,GAAG,CAAC,EAAU,EAAE,EAAE;IAClC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AACzD,CAAC,CAAC;AAFW,QAAA,KAAK,SAEhB;AAEK,MAAM,SAAS,GAAG,CAAC,IAA0B,EAAE,EAAE;;IACtD,MAAM,UAAU,GAAG,MAAA,IAAA,eAAK,EAAC,IAAI,CAAC,0CAAE,UAAU,EAAE,CAAC;IAC7C,OAAO,UAAU,GAAG,CAAC,IAAI,UAAU,GAAG,CAAC,CAAC;AAC1C,CAAC,CAAC;AAHW,QAAA,SAAS,aAGpB;AAEF;;;;;;;KAOK;AAEE,MAAM,kBAAkB,GAAG,CAAC,IAAsC,EAAE,EAAE;IAC3E,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,EAAE,IAAI,EAAE,IAAA,eAAK,GAAE,EAAE,CAAC;IAE3C,IAAI,EAAE,GAAG,IAAA,eAAK,EAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAChD,OAAO,CAAC,IAAA,iBAAS,EAAC,EAAE,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;QACpC,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,OAAO,EAAE,CAAC;AACZ,CAAC,CAAC;AATW,QAAA,kBAAkB,sBAS7B;AAEF;;;;;;;KAOK;AAEE,MAAM,cAAc,GAAG,CAAC,IAAsC,EAAE,EAAE;IACvE,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,EAAE,IAAI,EAAE,IAAA,eAAK,GAAE,EAAE,CAAC;IAE3C,IAAI,EAAE,GAAG,IAAA,eAAK,EAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAC3C,OAAO,CAAC,IAAA,iBAAS,EAAC,EAAE,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;QACpC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACxB,CAAC;IAED,OAAO,EAAE,CAAC;AACZ,CAAC,CAAC;AATW,QAAA,cAAc,kBASzB;AAEK,MAAM,SAAS,GAAG,CAAC,IAKzB,EAAE,EAAE;IACH,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,GAAG,KAAK,EAAE,UAAU,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC;IACrE,OAAO,IAAA,eAAK,EAAC,IAAI,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AACvE,CAAC,CAAC;AARW,QAAA,SAAS,aAQpB;AAEK,MAAM,MAAM,GAAG,GAAG,EAAE;IACzB,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAC9B,OAAO,IAAA,qBAAK,EAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,SAAA,EAAE,EAAI,CAAC,CAAA,EAAE,CAAC,CAAC,CAAC;AAC/C,CAAC,CAAC;AAHW,QAAA,MAAM,UAGjB"}
|
package/dist/utilities/index.js
CHANGED
@@ -20,6 +20,7 @@ __exportStar(require("./error.utility"), exports);
|
|
20
20
|
__exportStar(require("./parse.utility"), exports);
|
21
21
|
__exportStar(require("./performance.utility"), exports);
|
22
22
|
__exportStar(require("./promise.utility"), exports);
|
23
|
+
__exportStar(require("./query.utility"), exports);
|
23
24
|
__exportStar(require("./request.utility"), exports);
|
24
25
|
__exportStar(require("./url.utility"), exports);
|
25
26
|
//# sourceMappingURL=index.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utilities/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAAiC;AACjC,iDAA+B;AAC/B,kDAAgC;AAChC,kDAAgC;AAChC,wDAAsC;AACtC,oDAAkC;AAClC,oDAAkC;AAClC,gDAA8B"}
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utilities/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAAiC;AACjC,iDAA+B;AAC/B,kDAAgC;AAChC,kDAAgC;AAChC,wDAAsC;AACtC,oDAAkC;AAClC,kDAAgC;AAChC,oDAAkC;AAClC,gDAA8B"}
|
@@ -0,0 +1,30 @@
|
|
1
|
+
import { BaseTzEntity } from '../base';
|
2
|
+
import { AnyType, EntityClassType } from '../common';
|
3
|
+
export declare const getTableDefinition: <T extends BaseTzEntity>(opts: {
|
4
|
+
model: EntityClassType<T>;
|
5
|
+
alias?: string;
|
6
|
+
}) => {
|
7
|
+
table: {
|
8
|
+
name: string;
|
9
|
+
alias: string;
|
10
|
+
nameWithQuotation: string;
|
11
|
+
};
|
12
|
+
tableWithAlias: string;
|
13
|
+
columns: { [key in keyof T]: string; };
|
14
|
+
columnsNoAlias: { [key in keyof T]: string; };
|
15
|
+
};
|
16
|
+
export declare const getValue: (value: AnyType) => any;
|
17
|
+
export declare const buildBatchUpdateQuery: <E>(opts: {
|
18
|
+
tableName: string;
|
19
|
+
keys: (keyof E)[];
|
20
|
+
data: AnyType[];
|
21
|
+
setKeys: (keyof E | {
|
22
|
+
sourceKey: keyof E;
|
23
|
+
targetKey: keyof E;
|
24
|
+
})[];
|
25
|
+
whereKeys: (keyof E | {
|
26
|
+
sourceKey: keyof E;
|
27
|
+
targetKey: keyof E;
|
28
|
+
})[];
|
29
|
+
whereRaws?: string[];
|
30
|
+
}) => string;
|
@@ -0,0 +1,143 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
exports.buildBatchUpdateQuery = exports.getValue = exports.getTableDefinition = void 0;
|
7
|
+
const helpers_1 = require("../helpers");
|
8
|
+
const get_1 = __importDefault(require("lodash/get"));
|
9
|
+
const pick_1 = __importDefault(require("lodash/pick"));
|
10
|
+
const snakeCase_1 = __importDefault(require("lodash/snakeCase"));
|
11
|
+
const error_utility_1 = require("./error.utility");
|
12
|
+
const getTableDefinition = (opts) => {
|
13
|
+
const { model, alias } = opts;
|
14
|
+
const tableAlias = alias !== null && alias !== void 0 ? alias : model.name.toLowerCase();
|
15
|
+
const tableNameWithAlias = `"${model.name}" ${tableAlias}`;
|
16
|
+
const tableColumns = Object.entries(model.definition.properties)
|
17
|
+
.map(([key, value]) => {
|
18
|
+
var _a, _b, _c;
|
19
|
+
const columnName = (_c = (_a = value === null || value === void 0 ? void 0 : value.name) !== null && _a !== void 0 ? _a : (_b = value === null || value === void 0 ? void 0 : value.postgresql) === null || _b === void 0 ? void 0 : _b.columnName) !== null && _c !== void 0 ? _c : key;
|
20
|
+
return {
|
21
|
+
[`${key}`]: `${tableAlias}.${columnName}`,
|
22
|
+
};
|
23
|
+
})
|
24
|
+
.reduce((acc, cur) => {
|
25
|
+
return Object.assign(Object.assign({}, acc), cur);
|
26
|
+
}, {});
|
27
|
+
const tableColumnsNoAlias = Object.entries(model.definition.properties)
|
28
|
+
.map(([key, value]) => {
|
29
|
+
var _a, _b, _c;
|
30
|
+
const columnName = (_c = (_a = value === null || value === void 0 ? void 0 : value.name) !== null && _a !== void 0 ? _a : (_b = value === null || value === void 0 ? void 0 : value.postgresql) === null || _b === void 0 ? void 0 : _b.columnName) !== null && _c !== void 0 ? _c : key;
|
31
|
+
return {
|
32
|
+
[`${key}`]: `${columnName}`,
|
33
|
+
};
|
34
|
+
})
|
35
|
+
.reduce((acc, cur) => {
|
36
|
+
return Object.assign(Object.assign({}, acc), cur);
|
37
|
+
}, {});
|
38
|
+
return {
|
39
|
+
table: { name: model.name, alias: tableAlias, nameWithQuotation: `"${model.name}"` },
|
40
|
+
tableWithAlias: tableNameWithAlias,
|
41
|
+
columns: tableColumns,
|
42
|
+
columnsNoAlias: tableColumnsNoAlias,
|
43
|
+
};
|
44
|
+
};
|
45
|
+
exports.getTableDefinition = getTableDefinition;
|
46
|
+
// --------------------------------------------------------------------------------
|
47
|
+
const getValue = (value) => {
|
48
|
+
switch (typeof value) {
|
49
|
+
case null: {
|
50
|
+
return 'null';
|
51
|
+
}
|
52
|
+
case 'number': {
|
53
|
+
return value === null || value === void 0 ? void 0 : value.toString();
|
54
|
+
}
|
55
|
+
case 'boolean': {
|
56
|
+
return value;
|
57
|
+
}
|
58
|
+
case 'string': {
|
59
|
+
if ((value === null || value === void 0 ? void 0 : value.toString().trim()) === '') {
|
60
|
+
return "''";
|
61
|
+
}
|
62
|
+
return `'${value === null || value === void 0 ? void 0 : value.toString().replace(/'/g, "''")}'`;
|
63
|
+
}
|
64
|
+
default: {
|
65
|
+
return `'${value}'`;
|
66
|
+
}
|
67
|
+
}
|
68
|
+
};
|
69
|
+
exports.getValue = getValue;
|
70
|
+
// --------------------------------------------------------------------------------
|
71
|
+
const buildBatchUpdateQuery = (opts) => {
|
72
|
+
const { data, tableName, keys, setKeys, whereKeys, whereRaws = [] } = opts;
|
73
|
+
const withAlias = 't';
|
74
|
+
if (!data.length || !keys.length || !setKeys.length || !whereKeys.length) {
|
75
|
+
helpers_1.applicationLogger.error('[batchUpdate] Missing required fields | Data: %d | Keys: %d | Set Keys: %d | Where Keys: %d', data.length, keys.length, setKeys.length, whereKeys.length);
|
76
|
+
throw (0, error_utility_1.getError)({
|
77
|
+
message: '[batchUpdate] Missing required fields',
|
78
|
+
});
|
79
|
+
}
|
80
|
+
// ----------------------------------------
|
81
|
+
const formattedData = data.map(obj => (0, pick_1.default)(obj, ...keys));
|
82
|
+
const withValues = formattedData.map(obj => {
|
83
|
+
const values = [];
|
84
|
+
for (const k of Object.keys(obj).sort()) {
|
85
|
+
const value = (0, get_1.default)(obj, k, null);
|
86
|
+
switch (typeof value) {
|
87
|
+
case 'object': {
|
88
|
+
values.push((0, exports.getValue)(JSON.stringify(value)));
|
89
|
+
break;
|
90
|
+
}
|
91
|
+
default: {
|
92
|
+
values.push((0, exports.getValue)(value));
|
93
|
+
break;
|
94
|
+
}
|
95
|
+
}
|
96
|
+
}
|
97
|
+
return `(${values.toString()})`;
|
98
|
+
});
|
99
|
+
const withKeys = keys.map(key => (0, snakeCase_1.default)(String(key))).sort();
|
100
|
+
// ----------------------------------------
|
101
|
+
const updateSets = [];
|
102
|
+
for (const key of setKeys) {
|
103
|
+
switch (typeof key) {
|
104
|
+
case 'string': {
|
105
|
+
updateSets.push(`"${(0, snakeCase_1.default)(key)}" = ${withAlias}."${(0, snakeCase_1.default)(key)}"`);
|
106
|
+
break;
|
107
|
+
}
|
108
|
+
case 'object': {
|
109
|
+
updateSets.push(`"${(0, snakeCase_1.default)(String(key.targetKey))}" = ${withAlias}."${(0, snakeCase_1.default)(String(key.sourceKey))}"::JSONB`);
|
110
|
+
break;
|
111
|
+
}
|
112
|
+
default: {
|
113
|
+
break;
|
114
|
+
}
|
115
|
+
}
|
116
|
+
}
|
117
|
+
// ----------------------------------------
|
118
|
+
const updateWheres = [];
|
119
|
+
for (const key of whereKeys) {
|
120
|
+
switch (typeof key) {
|
121
|
+
case 'string': {
|
122
|
+
updateWheres.push(`"${tableName}"."${(0, snakeCase_1.default)(key)}" = ${withAlias}."${(0, snakeCase_1.default)(key)}"`);
|
123
|
+
break;
|
124
|
+
}
|
125
|
+
case 'object': {
|
126
|
+
updateWheres.push(`${(0, snakeCase_1.default)(String(key.targetKey))} = ${withAlias}."${(0, snakeCase_1.default)(String(key.sourceKey))}"`);
|
127
|
+
break;
|
128
|
+
}
|
129
|
+
default: {
|
130
|
+
break;
|
131
|
+
}
|
132
|
+
}
|
133
|
+
}
|
134
|
+
// ----------------------------------------
|
135
|
+
return `WITH ${withAlias} (${withKeys}) AS (VALUES ${withValues})
|
136
|
+
UPDATE "${tableName}"
|
137
|
+
SET ${updateSets.join(', ')}
|
138
|
+
FROM ${withAlias}
|
139
|
+
WHERE ${updateWheres.join(' AND ')}
|
140
|
+
${whereRaws.length ? `AND ${whereRaws.join(', AND')}` : ''};`;
|
141
|
+
};
|
142
|
+
exports.buildBatchUpdateQuery = buildBatchUpdateQuery;
|
143
|
+
//# sourceMappingURL=query.utility.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"query.utility.js","sourceRoot":"","sources":["../../src/utilities/query.utility.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@minimaltech/node-infra",
|
3
|
-
"version": "0.3.
|
3
|
+
"version": "0.3.24",
|
4
4
|
"description": "Minimal Technology NodeJS Infrastructure - Loopback 4 Framework",
|
5
5
|
"keywords": [
|
6
6
|
"web",
|
@@ -142,11 +142,11 @@
|
|
142
142
|
"mocha": "^11.0.1",
|
143
143
|
"mqtt": "^5.10.3",
|
144
144
|
"multer": "1.4.5-lts.1",
|
145
|
-
"rxjs": "^7.8.1",
|
146
145
|
"socket.io": "^4.8.1",
|
147
146
|
"socket.io-client": "^4.8.1",
|
148
147
|
"winston": "^3.17.0",
|
149
|
-
"winston-daily-rotate-file": "^5.0.0"
|
148
|
+
"winston-daily-rotate-file": "^5.0.0",
|
149
|
+
"winston-transport": "^4.9.0"
|
150
150
|
},
|
151
151
|
"devDependencies": {
|
152
152
|
"@loopback/build": "^11.0.7",
|
@@ -1,9 +0,0 @@
|
|
1
|
-
import { juggler } from '@loopback/repository';
|
2
|
-
import { ApplicationLogger } from '../helpers';
|
3
|
-
export declare class BaseDataSource extends juggler.DataSource {
|
4
|
-
protected logger: ApplicationLogger;
|
5
|
-
constructor(opts: {
|
6
|
-
dsConfig: object;
|
7
|
-
scope: string;
|
8
|
-
});
|
9
|
-
}
|
@@ -1,13 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.BaseDataSource = void 0;
|
4
|
-
const repository_1 = require("@loopback/repository");
|
5
|
-
const helpers_1 = require("../helpers");
|
6
|
-
class BaseDataSource extends repository_1.juggler.DataSource {
|
7
|
-
constructor(opts) {
|
8
|
-
super(opts.dsConfig);
|
9
|
-
this.logger = helpers_1.LoggerFactory.getLogger([opts.scope]);
|
10
|
-
}
|
11
|
-
}
|
12
|
-
exports.BaseDataSource = BaseDataSource;
|
13
|
-
//# sourceMappingURL=base.datasource.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"base.datasource.js","sourceRoot":"","sources":["../../src/base/base.datasource.ts"],"names":[],"mappings":";;;AAAA,qDAA+C;AAC/C,uCAA6D;AAE7D,MAAa,cAAe,SAAQ,oBAAO,CAAC,UAAU;IAGpD,YAAY,IAAyC;QACnD,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,uBAAa,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACtD,CAAC;CACF;AAPD,wCAOC"}
|
@@ -1,9 +0,0 @@
|
|
1
|
-
import { BaseDataSource } from '../base/base.datasource';
|
2
|
-
export declare class KvMemDataSource extends BaseDataSource {
|
3
|
-
static dataSourceName: string;
|
4
|
-
static readonly defaultConfig: {
|
5
|
-
name: string;
|
6
|
-
connector: string;
|
7
|
-
};
|
8
|
-
constructor(dsConfig?: object);
|
9
|
-
}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"kvmem.datasource.js","sourceRoot":"","sources":["../../src/datasources/kvmem.datasource.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4DAAwD;AACxD,yCAAwC;AAExC,MAAM,SAAS,GAAG;IAChB,IAAI,EAAE,OAAO;IACb,SAAS,EAAE,WAAW;CACvB,CAAC;AAEF,IAAa,eAAe,uBAA5B,MAAa,eAAgB,SAAQ,gCAAc;IAIjD,YAEE,WAAmB,SAAS;QAE5B,KAAK,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,iBAAe,CAAC,IAAI,EAAE,CAAC,CAAC;QACjD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0CAA0C,EAAE,QAAQ,CAAC,CAAC;IACzE,CAAC;;AAVU,0CAAe;AACnB,8BAAc,GAAG,SAAS,CAAC,IAAI,AAAjB,CAAkB;AACvB,6BAAa,GAAG,SAAS,AAAZ,CAAa;0BAF/B,eAAe;IAKvB,WAAA,IAAA,aAAM,EAAC,sBAAsB,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;;GAL1D,eAAe,CAW3B"}
|
@@ -1,14 +0,0 @@
|
|
1
|
-
import { BaseDataSource } from '../base/base.datasource';
|
2
|
-
export declare class PostgresDataSource extends BaseDataSource {
|
3
|
-
static dataSourceName: string | undefined;
|
4
|
-
static readonly defaultConfig: {
|
5
|
-
connector: string;
|
6
|
-
name: string | undefined;
|
7
|
-
host: string | undefined;
|
8
|
-
port: string | undefined;
|
9
|
-
user: string | undefined;
|
10
|
-
password: string | undefined;
|
11
|
-
database: string | undefined;
|
12
|
-
};
|
13
|
-
constructor(dsConfig?: object);
|
14
|
-
}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"postgres.datasource.js","sourceRoot":"","sources":["../../src/datasources/postgres.datasource.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAAA,4DAAwD;AACxD,2CAAuC;AACvC,yCAAwC;AACxC,qDAA6B;AAC7B,6DAAqC;AAErC,MAAM,SAAS,GAAG;IAChB,SAAS,EAAE,YAAY;IACvB,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,uBAAuB;IACzC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB;IACvC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB;IACvC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,yBAAyB;IAC3C,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,yBAAyB;IAC/C,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,yBAAyB;CAChD,CAAC;AAEF,IAAa,kBAAkB,0BAA/B,MAAa,kBAAmB,SAAQ,gCAAc;IAIpD,YAEE,WAAmB,SAAS;QAE5B,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;YAC5B,MAAM,KAAK,GAAG,IAAA,aAAG,EAAC,SAAS,EAAE,GAAG,CAAC,CAAC;YAClC,QAAQ,OAAO,KAAK,EAAE,CAAC;gBACrB,KAAK,QAAQ,CAAC,CAAC,CAAC;oBACd,IAAI,CAAC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;wBACxB,MAAM,IAAA,oBAAQ,EAAC;4BACb,OAAO,EAAE,8CAA8C,GAAG,aAAa,KAAK,EAAE;yBAC/E,CAAC,CAAC;oBACL,CAAC;oBACD,MAAM;gBACR,CAAC;gBACD,KAAK,QAAQ,CAAC,CAAC,CAAC;oBACd,IAAI,CAAC,KAAK,IAAI,IAAA,iBAAO,EAAC,KAAK,CAAC,EAAE,CAAC;wBAC7B,MAAM,IAAA,oBAAQ,EAAC;4BACb,OAAO,EAAE,8CAA8C,GAAG,aAAa,KAAK,EAAE;yBAC/E,CAAC,CAAC;oBACL,CAAC;oBACD,MAAM;gBACR,CAAC;gBACD,OAAO,CAAC,CAAC,CAAC;oBACR,MAAM;gBACR,CAAC;YACH,CAAC;QACH,CAAC;QAED,KAAK,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,oBAAkB,CAAC,IAAI,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,6CAA6C,EAAE,QAAQ,CAAC,CAAC;IAC5E,CAAC;;AAnCU,gDAAkB;AACtB,iCAAc,GAAG,SAAS,CAAC,IAAI,AAAjB,CAAkB;AACvB,gCAAa,GAAG,SAAS,AAAZ,CAAa;6BAF/B,kBAAkB;IAK1B,WAAA,IAAA,aAAM,EAAC,sBAAsB,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;;GAL1D,kBAAkB,CAoC9B"}
|