@joktec/mysql 0.0.1
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/LICENSE +22 -0
- package/README.md +118 -0
- package/bin/generate-entity.sh +189 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +29 -0
- package/dist/index.js.map +1 -0
- package/dist/models/index.d.ts +4 -0
- package/dist/models/index.d.ts.map +1 -0
- package/dist/models/index.js +20 -0
- package/dist/models/index.js.map +1 -0
- package/dist/models/mysql.model.d.ts +7 -0
- package/dist/models/mysql.model.d.ts.map +1 -0
- package/dist/models/mysql.model.js +36 -0
- package/dist/models/mysql.model.js.map +1 -0
- package/dist/models/mysql.request.d.ts +10 -0
- package/dist/models/mysql.request.d.ts.map +1 -0
- package/dist/models/mysql.request.js +3 -0
- package/dist/models/mysql.request.js.map +1 -0
- package/dist/models/mysql.response.d.ts +4 -0
- package/dist/models/mysql.response.d.ts.map +1 -0
- package/dist/models/mysql.response.js +3 -0
- package/dist/models/mysql.response.js.map +1 -0
- package/dist/mysql.client.d.ts +9 -0
- package/dist/mysql.client.d.ts.map +1 -0
- package/dist/mysql.client.js +3 -0
- package/dist/mysql.client.js.map +1 -0
- package/dist/mysql.config.d.ts +35 -0
- package/dist/mysql.config.d.ts.map +1 -0
- package/dist/mysql.config.js +120 -0
- package/dist/mysql.config.js.map +1 -0
- package/dist/mysql.exception.d.ts +6 -0
- package/dist/mysql.exception.d.ts.map +1 -0
- package/dist/mysql.exception.js +30 -0
- package/dist/mysql.exception.js.map +1 -0
- package/dist/mysql.module.d.ts +3 -0
- package/dist/mysql.module.d.ts.map +1 -0
- package/dist/mysql.module.js +23 -0
- package/dist/mysql.module.js.map +1 -0
- package/dist/mysql.repo.d.ts +22 -0
- package/dist/mysql.repo.d.ts.map +1 -0
- package/dist/mysql.repo.js +119 -0
- package/dist/mysql.repo.js.map +1 -0
- package/dist/mysql.service.d.ts +13 -0
- package/dist/mysql.service.d.ts.map +1 -0
- package/dist/mysql.service.js +82 -0
- package/dist/mysql.service.js.map +1 -0
- package/dist/mysql.utils.d.ts +5 -0
- package/dist/mysql.utils.d.ts.map +1 -0
- package/dist/mysql.utils.js +55 -0
- package/dist/mysql.utils.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +53 -0
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.MysqlConfig = exports.Dialect = exports.MysqlSlaveConfig = void 0;
|
|
13
|
+
const core_1 = require("@joktec/core");
|
|
14
|
+
const lodash_1 = require("lodash");
|
|
15
|
+
class MysqlSlaveConfig {
|
|
16
|
+
constructor(props) {
|
|
17
|
+
Object.assign(this, Object.assign({}, props));
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
__decorate([
|
|
21
|
+
(0, core_1.IsString)(),
|
|
22
|
+
(0, core_1.IsNotEmpty)(),
|
|
23
|
+
__metadata("design:type", String)
|
|
24
|
+
], MysqlSlaveConfig.prototype, "host", void 0);
|
|
25
|
+
__decorate([
|
|
26
|
+
(0, core_1.IsInt)(),
|
|
27
|
+
(0, core_1.IsNotEmpty)(),
|
|
28
|
+
__metadata("design:type", Number)
|
|
29
|
+
], MysqlSlaveConfig.prototype, "port", void 0);
|
|
30
|
+
__decorate([
|
|
31
|
+
(0, core_1.IsString)(),
|
|
32
|
+
(0, core_1.IsNotEmpty)(),
|
|
33
|
+
__metadata("design:type", String)
|
|
34
|
+
], MysqlSlaveConfig.prototype, "username", void 0);
|
|
35
|
+
__decorate([
|
|
36
|
+
(0, core_1.IsString)(),
|
|
37
|
+
(0, core_1.IsNotEmpty)(),
|
|
38
|
+
__metadata("design:type", String)
|
|
39
|
+
], MysqlSlaveConfig.prototype, "password", void 0);
|
|
40
|
+
__decorate([
|
|
41
|
+
(0, core_1.IsString)(),
|
|
42
|
+
(0, core_1.IsNotEmpty)(),
|
|
43
|
+
__metadata("design:type", String)
|
|
44
|
+
], MysqlSlaveConfig.prototype, "database", void 0);
|
|
45
|
+
exports.MysqlSlaveConfig = MysqlSlaveConfig;
|
|
46
|
+
var Dialect;
|
|
47
|
+
(function (Dialect) {
|
|
48
|
+
Dialect["MYSQL"] = "mysql";
|
|
49
|
+
Dialect["POSTGRES"] = "postgres";
|
|
50
|
+
Dialect["SQLITE"] = "sqlite";
|
|
51
|
+
Dialect["MARIADB"] = "mariadb";
|
|
52
|
+
Dialect["MSSQL"] = "mssql";
|
|
53
|
+
Dialect["DB2"] = "db2";
|
|
54
|
+
Dialect["SNOWFLAKE"] = "snowflake";
|
|
55
|
+
Dialect["ORACLE"] = "oracle";
|
|
56
|
+
})(Dialect = exports.Dialect || (exports.Dialect = {}));
|
|
57
|
+
class MysqlConfig extends core_1.ClientConfig {
|
|
58
|
+
constructor(props) {
|
|
59
|
+
var _a;
|
|
60
|
+
super(props);
|
|
61
|
+
Object.assign(this, Object.assign(Object.assign({}, props), { dialect: (props === null || props === void 0 ? void 0 : props.dialect) || Dialect.MYSQL, host: (props === null || props === void 0 ? void 0 : props.host) || 'localhost', port: (0, core_1.toInt)(props === null || props === void 0 ? void 0 : props.port, 3306), connectTimeout: (0, core_1.toInt)(props === null || props === void 0 ? void 0 : props.connectTimeout, 20000), slaves: [] }));
|
|
62
|
+
if ((_a = props === null || props === void 0 ? void 0 : props.slaves) === null || _a === void 0 ? void 0 : _a.length) {
|
|
63
|
+
const masterConfig = (0, lodash_1.pick)(props, ['host', 'port', 'username', 'password', 'database']);
|
|
64
|
+
this.slaves = props.slaves.map(slave => new MysqlSlaveConfig(Object.assign(Object.assign({}, masterConfig), slave)));
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
__decorate([
|
|
69
|
+
(0, core_1.IsString)(),
|
|
70
|
+
(0, core_1.IsNotEmpty)(),
|
|
71
|
+
__metadata("design:type", String)
|
|
72
|
+
], MysqlConfig.prototype, "dialect", void 0);
|
|
73
|
+
__decorate([
|
|
74
|
+
(0, core_1.IsString)(),
|
|
75
|
+
(0, core_1.IsNotEmpty)(),
|
|
76
|
+
__metadata("design:type", String)
|
|
77
|
+
], MysqlConfig.prototype, "host", void 0);
|
|
78
|
+
__decorate([
|
|
79
|
+
(0, core_1.IsInt)(),
|
|
80
|
+
(0, core_1.IsNotEmpty)(),
|
|
81
|
+
__metadata("design:type", Number)
|
|
82
|
+
], MysqlConfig.prototype, "port", void 0);
|
|
83
|
+
__decorate([
|
|
84
|
+
(0, core_1.IsString)(),
|
|
85
|
+
(0, core_1.IsNotEmpty)(),
|
|
86
|
+
__metadata("design:type", String)
|
|
87
|
+
], MysqlConfig.prototype, "username", void 0);
|
|
88
|
+
__decorate([
|
|
89
|
+
(0, core_1.IsString)(),
|
|
90
|
+
(0, core_1.IsNotEmpty)(),
|
|
91
|
+
__metadata("design:type", String)
|
|
92
|
+
], MysqlConfig.prototype, "password", void 0);
|
|
93
|
+
__decorate([
|
|
94
|
+
(0, core_1.IsString)(),
|
|
95
|
+
(0, core_1.IsNotEmpty)(),
|
|
96
|
+
__metadata("design:type", String)
|
|
97
|
+
], MysqlConfig.prototype, "database", void 0);
|
|
98
|
+
__decorate([
|
|
99
|
+
(0, core_1.IsString)(),
|
|
100
|
+
(0, core_1.IsOptional)(),
|
|
101
|
+
__metadata("design:type", String)
|
|
102
|
+
], MysqlConfig.prototype, "charset", void 0);
|
|
103
|
+
__decorate([
|
|
104
|
+
(0, core_1.IsString)(),
|
|
105
|
+
(0, core_1.IsOptional)(),
|
|
106
|
+
__metadata("design:type", String)
|
|
107
|
+
], MysqlConfig.prototype, "timezone", void 0);
|
|
108
|
+
__decorate([
|
|
109
|
+
(0, core_1.IsInt)(),
|
|
110
|
+
(0, core_1.IsOptional)(),
|
|
111
|
+
__metadata("design:type", Number)
|
|
112
|
+
], MysqlConfig.prototype, "connectTimeout", void 0);
|
|
113
|
+
__decorate([
|
|
114
|
+
(0, core_1.IsArray)(),
|
|
115
|
+
(0, core_1.IsTypes)([MysqlSlaveConfig], { each: true }),
|
|
116
|
+
(0, core_1.IsOptional)(),
|
|
117
|
+
__metadata("design:type", Array)
|
|
118
|
+
], MysqlConfig.prototype, "slaves", void 0);
|
|
119
|
+
exports.MysqlConfig = MysqlConfig;
|
|
120
|
+
//# sourceMappingURL=mysql.config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mysql.config.js","sourceRoot":"","sources":["../src/mysql.config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { InternalServerException } from '@joktec/core';
|
|
2
|
+
export declare class MysqlException extends InternalServerException {
|
|
3
|
+
constructor(msg: string, error: any);
|
|
4
|
+
}
|
|
5
|
+
export declare const MysqlCatch: MethodDecorator;
|
|
6
|
+
//# sourceMappingURL=mysql.exception.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mysql.exception.d.ts","sourceRoot":"","sources":["../src/mysql.exception.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,uBAAuB,EACxB,MAAM,cAAc,CAAC;AAGtB,qBAAa,cAAe,SAAQ,uBAAuB;gBAC7C,GAAG,EAAE,MAA0B,EAAE,KAAK,EAAE,GAAG;CAGxD;AAED,eAAO,MAAM,UAAU,iBAkBrB,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MysqlCatch = exports.MysqlException = void 0;
|
|
4
|
+
const core_1 = require("@joktec/core");
|
|
5
|
+
const lodash_1 = require("lodash");
|
|
6
|
+
class MysqlException extends core_1.InternalServerException {
|
|
7
|
+
constructor(msg = 'MYSQL_EXCEPTION', error) {
|
|
8
|
+
super(msg, error);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
exports.MysqlException = MysqlException;
|
|
12
|
+
exports.MysqlCatch = (0, core_1.BaseMethodDecorator)(async (options) => {
|
|
13
|
+
const { method, args } = options;
|
|
14
|
+
try {
|
|
15
|
+
return await method(...args);
|
|
16
|
+
}
|
|
17
|
+
catch (err) {
|
|
18
|
+
if (err.errors && Array.isArray(err.errors)) {
|
|
19
|
+
const items = err.errors.map(errItem => (0, lodash_1.pick)(errItem, ['message', 'path', 'value', 'validatorArgs']));
|
|
20
|
+
throw new core_1.BadRequestException(items[0].message, items);
|
|
21
|
+
}
|
|
22
|
+
if (err.parent || err.original) {
|
|
23
|
+
const parent = err.parent || err.original;
|
|
24
|
+
const msg = (0, lodash_1.snakeCase)(err.message).toUpperCase();
|
|
25
|
+
throw new core_1.BadRequestException(msg, parent);
|
|
26
|
+
}
|
|
27
|
+
throw new MysqlException(err.message, err);
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
//# sourceMappingURL=mysql.exception.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mysql.exception.js","sourceRoot":"","sources":["../src/mysql.exception.ts"],"names":[],"mappings":";;;AAAA,uCAKsB;AACtB,mCAAyC;AAEzC,MAAa,cAAe,SAAQ,8BAAuB;IACzD,YAAY,MAAc,iBAAiB,EAAE,KAAU;QACrD,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACpB,CAAC;CACF;AAJD,wCAIC;AAEY,QAAA,UAAU,GAAG,IAAA,0BAAmB,EAAC,KAAK,EAAE,OAAiC,EAAgB,EAAE;IACtG,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IACjC,IAAI;QACF,OAAO,MAAM,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;KAC9B;IAAC,OAAO,GAAG,EAAE;QACZ,IAAI,GAAG,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YAC3C,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,IAAA,aAAI,EAAC,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;YACtG,MAAM,IAAI,0BAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;SACxD;QAED,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,QAAQ,EAAE;YAC9B,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC;YAC1C,MAAM,GAAG,GAAG,IAAA,kBAAS,EAAC,GAAG,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;YACjD,MAAM,IAAI,0BAAmB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;SAC5C;QAED,MAAM,IAAI,cAAc,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;KAC5C;AACH,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mysql.module.d.ts","sourceRoot":"","sources":["../src/mysql.module.ts"],"names":[],"mappings":"AAGA,qBAMa,WAAW;CAAG"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.MysqlModule = void 0;
|
|
10
|
+
const core_1 = require("@joktec/core");
|
|
11
|
+
const mysql_service_1 = require("./mysql.service");
|
|
12
|
+
let MysqlModule = class MysqlModule {
|
|
13
|
+
};
|
|
14
|
+
MysqlModule = __decorate([
|
|
15
|
+
(0, core_1.Global)(),
|
|
16
|
+
(0, core_1.Module)({
|
|
17
|
+
imports: [],
|
|
18
|
+
providers: [mysql_service_1.MysqlService],
|
|
19
|
+
exports: [mysql_service_1.MysqlService],
|
|
20
|
+
})
|
|
21
|
+
], MysqlModule);
|
|
22
|
+
exports.MysqlModule = MysqlModule;
|
|
23
|
+
//# sourceMappingURL=mysql.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mysql.module.js","sourceRoot":"","sources":["../src/mysql.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,uCAA8C;AAC9C,mDAA+C;AAQxC,IAAM,WAAW,GAAjB,MAAM,WAAW;CAAG,CAAA;AAAd,WAAW;IANvB,IAAA,aAAM,GAAE;IACR,IAAA,aAAM,EAAC;QACN,OAAO,EAAE,EAAE;QACX,SAAS,EAAE,CAAC,4BAAY,CAAC;QACzB,OAAO,EAAE,CAAC,4BAAY,CAAC;KACxB,CAAC;GACW,WAAW,CAAG;AAAd,kCAAW"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { ICondition, OnModuleInit } from '@joktec/core';
|
|
2
|
+
import { IMysqlRepository } from './mysql.client';
|
|
3
|
+
import { MysqlService } from './mysql.service';
|
|
4
|
+
import { Model, ModelCtor } from 'sequelize-typescript';
|
|
5
|
+
import { IMysqlRequest, MysqlId } from './models';
|
|
6
|
+
export declare abstract class MysqlRepo<T extends Model<T>, ID = MysqlId> implements IMysqlRepository<T, ID>, OnModuleInit {
|
|
7
|
+
protected mysqlService: MysqlService;
|
|
8
|
+
protected model: ModelCtor<T>;
|
|
9
|
+
protected conId: string;
|
|
10
|
+
protected constructor(mysqlService: MysqlService, model: ModelCtor<T>, conId?: string);
|
|
11
|
+
onModuleInit(): Promise<void>;
|
|
12
|
+
find(query: IMysqlRequest): Promise<T[]>;
|
|
13
|
+
count(query: IMysqlRequest): Promise<number>;
|
|
14
|
+
findOne(query: IMysqlRequest): Promise<T>;
|
|
15
|
+
create(body: T): Promise<T>;
|
|
16
|
+
update(condition: ICondition, body: T): Promise<T>;
|
|
17
|
+
delete(condition: ICondition, opts?: {
|
|
18
|
+
force?: boolean;
|
|
19
|
+
}): Promise<T>;
|
|
20
|
+
upsert(condition: ICondition, body: T): Promise<T>;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=mysql.repo.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mysql.repo.d.ts","sourceRoot":"","sources":["../src/mysql.repo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,UAAU,EAAE,YAAY,EAAmB,MAAM,cAAc,CAAC;AACzF,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAKlD,8BAAsB,SAAS,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,OAAO,CAAE,YAAW,gBAAgB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,YAAY;IAE9G,SAAS,CAAC,YAAY,EAAE,YAAY;IACpC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;IAC7B,SAAS,CAAC,KAAK,EAAE,MAAM;IAHzB,SAAS,aACG,YAAY,EAAE,YAAY,EAC1B,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EACnB,KAAK,GAAE,MAAuB;IAGpC,YAAY;IAKZ,IAAI,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAYxC,KAAK,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;IAM5C,OAAO,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,CAAC,CAAC;IAOzC,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAK3B,MAAM,CAAC,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IASlD,MAAM,CAAC,SAAS,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,CAAC,CAAC;IAWrE,MAAM,CAAC,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;CAOzD"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.MysqlRepo = void 0;
|
|
13
|
+
const core_1 = require("@joktec/core");
|
|
14
|
+
const mysql_utils_1 = require("./mysql.utils");
|
|
15
|
+
const mysql_exception_1 = require("./mysql.exception");
|
|
16
|
+
class MysqlRepo {
|
|
17
|
+
constructor(mysqlService, model, conId = core_1.DEFAULT_CON_ID) {
|
|
18
|
+
this.mysqlService = mysqlService;
|
|
19
|
+
this.model = model;
|
|
20
|
+
this.conId = conId;
|
|
21
|
+
}
|
|
22
|
+
async onModuleInit() {
|
|
23
|
+
await this.mysqlService.getModelSync(this.model, this.conId);
|
|
24
|
+
}
|
|
25
|
+
async find(query) {
|
|
26
|
+
const options = (0, mysql_utils_1.preHandleQuery)(query.condition, query.keyword);
|
|
27
|
+
if (query.select)
|
|
28
|
+
options.attributes = (0, core_1.toArray)(query.select, ',');
|
|
29
|
+
if (query.sort)
|
|
30
|
+
options.order = Object.entries(query.sort);
|
|
31
|
+
if (query.limit && query.page) {
|
|
32
|
+
options.limit = query.limit;
|
|
33
|
+
options.offset = (query.page - 1) * query.limit;
|
|
34
|
+
}
|
|
35
|
+
return this.model.findAll(options);
|
|
36
|
+
}
|
|
37
|
+
async count(query) {
|
|
38
|
+
const options = (0, mysql_utils_1.preHandleQuery)(query.condition, query.keyword);
|
|
39
|
+
return this.model.count(options);
|
|
40
|
+
}
|
|
41
|
+
async findOne(query) {
|
|
42
|
+
const options = (0, mysql_utils_1.preHandleQuery)(query.condition, query.keyword);
|
|
43
|
+
if (query.select)
|
|
44
|
+
options.attributes = (0, core_1.toArray)(query.select, ',');
|
|
45
|
+
return this.model.findOne(options);
|
|
46
|
+
}
|
|
47
|
+
async create(body) {
|
|
48
|
+
return this.model.create(body);
|
|
49
|
+
}
|
|
50
|
+
async update(condition, body) {
|
|
51
|
+
const options = (0, mysql_utils_1.preHandleQuery)(condition);
|
|
52
|
+
const model = await this.model.findOne(options);
|
|
53
|
+
if (!model)
|
|
54
|
+
return null;
|
|
55
|
+
const fields = Object.keys(body);
|
|
56
|
+
return model.update(body, { fields });
|
|
57
|
+
}
|
|
58
|
+
async delete(condition, opts) {
|
|
59
|
+
const existModel = await this.findOne({ condition });
|
|
60
|
+
if (!existModel)
|
|
61
|
+
return null;
|
|
62
|
+
const options = (0, mysql_utils_1.preHandleQuery)(condition);
|
|
63
|
+
options.force = (0, core_1.toBool)(opts === null || opts === void 0 ? void 0 : opts.force, false);
|
|
64
|
+
await this.model.destroy(options);
|
|
65
|
+
return existModel;
|
|
66
|
+
}
|
|
67
|
+
async upsert(condition, body) {
|
|
68
|
+
const fields = Object.keys(body);
|
|
69
|
+
const pk = this.model.primaryKeyAttribute;
|
|
70
|
+
const [row, result] = await this.model.upsert(body, { returning: true, fields, conflictFields: [pk] });
|
|
71
|
+
if (!row || !result)
|
|
72
|
+
return null;
|
|
73
|
+
return row;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
__decorate([
|
|
77
|
+
mysql_exception_1.MysqlCatch,
|
|
78
|
+
__metadata("design:type", Function),
|
|
79
|
+
__metadata("design:paramtypes", [Object]),
|
|
80
|
+
__metadata("design:returntype", Promise)
|
|
81
|
+
], MysqlRepo.prototype, "find", null);
|
|
82
|
+
__decorate([
|
|
83
|
+
mysql_exception_1.MysqlCatch,
|
|
84
|
+
__metadata("design:type", Function),
|
|
85
|
+
__metadata("design:paramtypes", [Object]),
|
|
86
|
+
__metadata("design:returntype", Promise)
|
|
87
|
+
], MysqlRepo.prototype, "count", null);
|
|
88
|
+
__decorate([
|
|
89
|
+
mysql_exception_1.MysqlCatch,
|
|
90
|
+
__metadata("design:type", Function),
|
|
91
|
+
__metadata("design:paramtypes", [Object]),
|
|
92
|
+
__metadata("design:returntype", Promise)
|
|
93
|
+
], MysqlRepo.prototype, "findOne", null);
|
|
94
|
+
__decorate([
|
|
95
|
+
mysql_exception_1.MysqlCatch,
|
|
96
|
+
__metadata("design:type", Function),
|
|
97
|
+
__metadata("design:paramtypes", [Object]),
|
|
98
|
+
__metadata("design:returntype", Promise)
|
|
99
|
+
], MysqlRepo.prototype, "create", null);
|
|
100
|
+
__decorate([
|
|
101
|
+
mysql_exception_1.MysqlCatch,
|
|
102
|
+
__metadata("design:type", Function),
|
|
103
|
+
__metadata("design:paramtypes", [Object, Object]),
|
|
104
|
+
__metadata("design:returntype", Promise)
|
|
105
|
+
], MysqlRepo.prototype, "update", null);
|
|
106
|
+
__decorate([
|
|
107
|
+
mysql_exception_1.MysqlCatch,
|
|
108
|
+
__metadata("design:type", Function),
|
|
109
|
+
__metadata("design:paramtypes", [Object, Object]),
|
|
110
|
+
__metadata("design:returntype", Promise)
|
|
111
|
+
], MysqlRepo.prototype, "delete", null);
|
|
112
|
+
__decorate([
|
|
113
|
+
mysql_exception_1.MysqlCatch,
|
|
114
|
+
__metadata("design:type", Function),
|
|
115
|
+
__metadata("design:paramtypes", [Object, Object]),
|
|
116
|
+
__metadata("design:returntype", Promise)
|
|
117
|
+
], MysqlRepo.prototype, "upsert", null);
|
|
118
|
+
exports.MysqlRepo = MysqlRepo;
|
|
119
|
+
//# sourceMappingURL=mysql.repo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mysql.repo.js","sourceRoot":"","sources":["../src/mysql.repo.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { AbstractClientService } from '@joktec/core';
|
|
2
|
+
import { MysqlConfig } from './mysql.config';
|
|
3
|
+
import { MysqlClient } from './mysql.client';
|
|
4
|
+
import { Model, ModelCtor, Sequelize } from 'sequelize-typescript';
|
|
5
|
+
export declare class MysqlService extends AbstractClientService<MysqlConfig, Sequelize> implements MysqlClient {
|
|
6
|
+
constructor();
|
|
7
|
+
protected init(config: MysqlConfig): Promise<Sequelize>;
|
|
8
|
+
start(client: Sequelize, conId?: string): Promise<void>;
|
|
9
|
+
stop(client: Sequelize, conId?: string): Promise<void>;
|
|
10
|
+
getModel<T extends Model<T>>(model: ModelCtor<T>, conId?: string): ModelCtor<T>;
|
|
11
|
+
getModelSync<T extends Model<T>>(model: ModelCtor<T>, conId?: string): Promise<ModelCtor<T>>;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=mysql.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mysql.service.d.ts","sourceRoot":"","sources":["../src/mysql.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAqC,MAAM,cAAc,CAAC;AACxF,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAMnE,qBACa,YAAa,SAAQ,qBAAqB,CAAC,WAAW,EAAE,SAAS,CAAE,YAAW,WAAW;;cAMpF,IAAI,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC;IAoBvD,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,GAAE,MAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;IAUvE,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,GAAE,MAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;IAUrE,QAAQ,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,GAAE,MAAuB,GAAG,SAAS,CAAC,CAAC,CAAC;IAOzF,YAAY,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,EAC1C,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EACnB,KAAK,GAAE,MAAuB,GAC7B,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;CAOzB"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.MysqlService = void 0;
|
|
13
|
+
const core_1 = require("@joktec/core");
|
|
14
|
+
const mysql_config_1 = require("./mysql.config");
|
|
15
|
+
const sequelize_typescript_1 = require("sequelize-typescript");
|
|
16
|
+
const lodash_1 = require("lodash");
|
|
17
|
+
const RETRY_OPTS = 'mysql.retry';
|
|
18
|
+
let MysqlService = class MysqlService extends core_1.AbstractClientService {
|
|
19
|
+
constructor() {
|
|
20
|
+
super('mysql', mysql_config_1.MysqlConfig);
|
|
21
|
+
}
|
|
22
|
+
async init(config) {
|
|
23
|
+
var _a;
|
|
24
|
+
this.logService.info('MysqlConfig: %j', config);
|
|
25
|
+
const connection = (0, lodash_1.pick)(config, ['host', 'port', 'username', 'password', 'database']);
|
|
26
|
+
const options = Object.assign(Object.assign({}, connection), { dialect: config.dialect, dialectOptions: { charset: config.charset, connectTimeout: config.connectTimeout }, logging: (sql, timing) => {
|
|
27
|
+
this.logService.debug('SQL statement: %s', sql);
|
|
28
|
+
this.logService.trace('SQL execute in %j', timing);
|
|
29
|
+
} });
|
|
30
|
+
if ((_a = config.slaves) === null || _a === void 0 ? void 0 : _a.length) {
|
|
31
|
+
options.replication = { write: Object.assign({}, connection), read: config.slaves };
|
|
32
|
+
}
|
|
33
|
+
const sequelize = new sequelize_typescript_1.Sequelize(options);
|
|
34
|
+
this.logService.info('MySQL Service is configured in `%s` connection', config.conId);
|
|
35
|
+
return sequelize;
|
|
36
|
+
}
|
|
37
|
+
async start(client, conId = core_1.DEFAULT_CON_ID) {
|
|
38
|
+
const config = this.getConfig(conId);
|
|
39
|
+
try {
|
|
40
|
+
await client.authenticate();
|
|
41
|
+
this.logService.info('MySQL Service have been start on host %s', config.host);
|
|
42
|
+
}
|
|
43
|
+
catch (err) {
|
|
44
|
+
this.logService.error(err, 'MySQL Service failed to start on host %s', config.host);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
async stop(client, conId = core_1.DEFAULT_CON_ID) {
|
|
48
|
+
const config = this.getConfig(conId);
|
|
49
|
+
try {
|
|
50
|
+
await client.close();
|
|
51
|
+
this.logService.warn('MySQL Service have been stop on host %s', config.host);
|
|
52
|
+
}
|
|
53
|
+
catch (err) {
|
|
54
|
+
this.logService.error(err, 'MySQL Service failed to stop on host %s', config.host);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
getModel(model, conId = core_1.DEFAULT_CON_ID) {
|
|
58
|
+
if (!this.getClient(conId).isDefined(model.name)) {
|
|
59
|
+
this.getClient(conId).addModels([model]);
|
|
60
|
+
}
|
|
61
|
+
return model;
|
|
62
|
+
}
|
|
63
|
+
async getModelSync(model, conId = core_1.DEFAULT_CON_ID) {
|
|
64
|
+
if (!this.getClient(conId).isDefined(model.name)) {
|
|
65
|
+
this.getClient(conId).addModels([model]);
|
|
66
|
+
await model.sync({ alter: { drop: false } });
|
|
67
|
+
}
|
|
68
|
+
return model;
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
__decorate([
|
|
72
|
+
(0, core_1.Retry)(RETRY_OPTS),
|
|
73
|
+
__metadata("design:type", Function),
|
|
74
|
+
__metadata("design:paramtypes", [mysql_config_1.MysqlConfig]),
|
|
75
|
+
__metadata("design:returntype", Promise)
|
|
76
|
+
], MysqlService.prototype, "init", null);
|
|
77
|
+
MysqlService = __decorate([
|
|
78
|
+
(0, core_1.Injectable)(),
|
|
79
|
+
__metadata("design:paramtypes", [])
|
|
80
|
+
], MysqlService);
|
|
81
|
+
exports.MysqlService = MysqlService;
|
|
82
|
+
//# sourceMappingURL=mysql.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mysql.service.js","sourceRoot":"","sources":["../src/mysql.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { ICondition, IKeyword, IOperation } from '@joktec/core';
|
|
2
|
+
import { FindOptions } from 'sequelize';
|
|
3
|
+
export declare const preHandleQuery: (condition: ICondition, keyword?: IKeyword) => FindOptions;
|
|
4
|
+
export declare const convertOp: (op: IOperation) => symbol;
|
|
5
|
+
//# sourceMappingURL=mysql.utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mysql.utils.d.ts","sourceRoot":"","sources":["../src/mysql.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,QAAQ,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAM,MAAM,WAAW,CAAC;AAE5C,eAAO,MAAM,cAAc,cAAe,UAAU,YAAY,QAAQ,KAAG,WA2B1E,CAAC;AAEF,eAAO,MAAM,SAAS,OAAQ,UAAU,KAAG,MA2B1C,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.convertOp = exports.preHandleQuery = void 0;
|
|
4
|
+
const sequelize_1 = require("sequelize");
|
|
5
|
+
const preHandleQuery = (condition, keyword) => {
|
|
6
|
+
const where = {};
|
|
7
|
+
for (const [key, value] of Object.entries(condition)) {
|
|
8
|
+
if (key === '$and') {
|
|
9
|
+
where[sequelize_1.Op.and] = value.map(c => (0, exports.preHandleQuery)(c));
|
|
10
|
+
}
|
|
11
|
+
else if (key === '$or') {
|
|
12
|
+
where[sequelize_1.Op.or] = value.map(c => (0, exports.preHandleQuery)(c));
|
|
13
|
+
}
|
|
14
|
+
else if (typeof value === 'object') {
|
|
15
|
+
const entries = Object.entries(value);
|
|
16
|
+
for (const [op, val] of entries) {
|
|
17
|
+
const sqlOp = (0, exports.convertOp)(op);
|
|
18
|
+
where[key] = Object.assign(Object.assign({}, where[key]), { [sqlOp]: val });
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
where[key] = value;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
if (keyword) {
|
|
26
|
+
Object.entries(keyword).map(([key, value]) => {
|
|
27
|
+
where[key] = { [sequelize_1.Op.substring]: value };
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
return { where };
|
|
31
|
+
};
|
|
32
|
+
exports.preHandleQuery = preHandleQuery;
|
|
33
|
+
const convertOp = (op) => {
|
|
34
|
+
switch (op) {
|
|
35
|
+
case '$ne':
|
|
36
|
+
return sequelize_1.Op.ne;
|
|
37
|
+
case '$gt':
|
|
38
|
+
return sequelize_1.Op.gt;
|
|
39
|
+
case '$gte':
|
|
40
|
+
return sequelize_1.Op.gte;
|
|
41
|
+
case '$lt':
|
|
42
|
+
return sequelize_1.Op.lt;
|
|
43
|
+
case '$lte':
|
|
44
|
+
return sequelize_1.Op.lte;
|
|
45
|
+
case '$in':
|
|
46
|
+
return sequelize_1.Op.in;
|
|
47
|
+
case '$nin':
|
|
48
|
+
return sequelize_1.Op.notIn;
|
|
49
|
+
case '$eq':
|
|
50
|
+
default:
|
|
51
|
+
return sequelize_1.Op.eq;
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
exports.convertOp = convertOp;
|
|
55
|
+
//# sourceMappingURL=mysql.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mysql.utils.js","sourceRoot":"","sources":["../src/mysql.utils.ts"],"names":[],"mappings":";;;AACA,yCAA4C;AAErC,MAAM,cAAc,GAAG,CAAC,SAAqB,EAAE,OAAkB,EAAe,EAAE;IACvF,MAAM,KAAK,GAAiC,EAAE,CAAC;IAE/C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;QACpD,IAAI,GAAG,KAAK,MAAM,EAAE;YAClB,KAAK,CAAC,cAAE,CAAC,GAAG,CAAC,GAAI,KAAsB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAA,sBAAc,EAAC,CAAC,CAAC,CAAC,CAAC;SACrE;aAAM,IAAI,GAAG,KAAK,KAAK,EAAE;YACxB,KAAK,CAAC,cAAE,CAAC,EAAE,CAAC,GAAI,KAAsB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAA,sBAAc,EAAC,CAAC,CAAC,CAAC,CAAC;SACpE;aAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YACpC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAA8B,CAAC;YACnE,KAAK,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,OAAO,EAAE;gBAC/B,MAAM,KAAK,GAAG,IAAA,iBAAS,EAAC,EAAE,CAAC,CAAC;gBAC5B,KAAK,CAAC,GAAG,CAAC,mCAAQ,KAAK,CAAC,GAAG,CAAC,KAAE,CAAC,KAAK,CAAC,EAAE,GAAG,GAAE,CAAC;aAC9C;SACF;aAAM;YACL,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;SACpB;KACF;IAGD,IAAI,OAAO,EAAE;QACX,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;YAC3C,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,cAAE,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC;QACzC,CAAC,CAAC,CAAC;KACJ;IAED,OAAO,EAAE,KAAK,EAAE,CAAC;AACnB,CAAC,CAAC;AA3BW,QAAA,cAAc,kBA2BzB;AAEK,MAAM,SAAS,GAAG,CAAC,EAAc,EAAU,EAAE;IAClD,QAAQ,EAAE,EAAE;QACV,KAAK,KAAK;YACR,OAAO,cAAE,CAAC,EAAE,CAAC;QAEf,KAAK,KAAK;YACR,OAAO,cAAE,CAAC,EAAE,CAAC;QAEf,KAAK,MAAM;YACT,OAAO,cAAE,CAAC,GAAG,CAAC;QAEhB,KAAK,KAAK;YACR,OAAO,cAAE,CAAC,EAAE,CAAC;QAEf,KAAK,MAAM;YACT,OAAO,cAAE,CAAC,GAAG,CAAC;QAEhB,KAAK,KAAK;YACR,OAAO,cAAE,CAAC,EAAE,CAAC;QAEf,KAAK,MAAM;YACT,OAAO,cAAE,CAAC,KAAK,CAAC;QAElB,KAAK,KAAK,CAAC;QACX;YACE,OAAO,cAAE,CAAC,EAAE,CAAC;KAChB;AACH,CAAC,CAAC;AA3BW,QAAA,SAAS,aA2BpB"}
|