@eventista/ticketing-common 1.0.9 → 1.0.11
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/README.md +16 -1
- package/dist/database/redis/redis.module.js +46 -4
- package/dist/database/redis/redis.module.js.map +1 -1
- package/dist/database/redis/redis.service.d.ts +8 -4
- package/dist/database/redis/redis.service.js +95 -11
- package/dist/database/redis/redis.service.js.map +1 -1
- package/dist/pipes/custom-validation.pipe.js +20 -5
- package/dist/pipes/custom-validation.pipe.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,2 +1,17 @@
|
|
|
1
|
+
# 1.Lệnh build
|
|
2
|
+
```bash
|
|
1
3
|
npm run build
|
|
2
|
-
|
|
4
|
+
```
|
|
5
|
+
|
|
6
|
+
# 2.Lệnh Push lên NPM
|
|
7
|
+
```bash
|
|
8
|
+
npm publish
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
# Tên thư viện
|
|
12
|
+
@eventista/ticketing-common
|
|
13
|
+
|
|
14
|
+
# Lệnh cài đặt thư viện
|
|
15
|
+
```bash
|
|
16
|
+
npm install @eventista/ticketing-common
|
|
17
|
+
```
|
|
@@ -21,26 +21,68 @@ exports.RedisModule = RedisModule = __decorate([
|
|
|
21
21
|
{
|
|
22
22
|
provide: 'REDIS_CLIENT',
|
|
23
23
|
useFactory: (configService) => {
|
|
24
|
+
const logger = new common_1.Logger('RedisModule');
|
|
24
25
|
const Redis = require('ioredis');
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
26
|
+
logger.log('Initializing Redis connection...');
|
|
27
|
+
const host = configService.get('REDIS_HOST', 'localhost');
|
|
28
|
+
const port = configService.get('REDIS_PORT', 6379);
|
|
29
|
+
logger.log(`Connecting to Redis at ${host}:${port}`);
|
|
30
|
+
const redis = new Redis({
|
|
31
|
+
host: host,
|
|
32
|
+
port: port,
|
|
28
33
|
password: configService.get('REDIS_PASSWORD', 'StrongRedisPassword123'),
|
|
29
34
|
db: configService.get('REDIS_DB', 0),
|
|
30
35
|
maxRetriesPerRequest: 3,
|
|
31
36
|
connectTimeout: 10000,
|
|
32
37
|
connectionName: 'ticket-service',
|
|
33
38
|
retryStrategy: (times) => {
|
|
39
|
+
logger.warn(`Redis connection attempt ${times} failed. Retrying...`);
|
|
34
40
|
if (times > 3) {
|
|
41
|
+
logger.error('Redis connection failed after 3 attempts. Giving up.');
|
|
35
42
|
return null;
|
|
36
43
|
}
|
|
37
|
-
|
|
44
|
+
const delay = Math.min(times * 50, 1000);
|
|
45
|
+
logger.log(`Retrying Redis connection in ${delay}ms`);
|
|
46
|
+
return delay;
|
|
38
47
|
},
|
|
39
48
|
enableReadyCheck: false,
|
|
40
49
|
enableOfflineQueue: true,
|
|
41
50
|
keepAlive: 10000,
|
|
42
51
|
noDelay: true,
|
|
43
52
|
});
|
|
53
|
+
redis.on('connect', () => {
|
|
54
|
+
logger.log('Redis client connected');
|
|
55
|
+
});
|
|
56
|
+
redis.on('ready', () => {
|
|
57
|
+
logger.log('Redis client ready');
|
|
58
|
+
});
|
|
59
|
+
redis.on('error', (err) => {
|
|
60
|
+
logger.error(`Redis client error: ${err.message}`, err.stack);
|
|
61
|
+
});
|
|
62
|
+
redis.on('close', () => {
|
|
63
|
+
logger.warn('Redis connection closed');
|
|
64
|
+
});
|
|
65
|
+
redis.on('reconnecting', () => {
|
|
66
|
+
logger.log('Redis client reconnecting');
|
|
67
|
+
});
|
|
68
|
+
redis.on('end', () => {
|
|
69
|
+
logger.warn('Redis connection ended');
|
|
70
|
+
});
|
|
71
|
+
redis.on('error', (err) => {
|
|
72
|
+
if (err.code === 'ECONNREFUSED') {
|
|
73
|
+
logger.error(`Cannot connect to Redis at ${host}:${port}. Connection refused.`);
|
|
74
|
+
}
|
|
75
|
+
else if (err.code === 'ETIMEDOUT') {
|
|
76
|
+
logger.error(`Connection to Redis at ${host}:${port} timed out.`);
|
|
77
|
+
}
|
|
78
|
+
else if (err.code === 'ENOTFOUND') {
|
|
79
|
+
logger.error(`Redis host ${host} not found. Please check your configuration.`);
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
logger.error(`Redis error: ${err.message}`, err.stack);
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
return redis;
|
|
44
86
|
},
|
|
45
87
|
inject: [config_1.ConfigService],
|
|
46
88
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redis.module.js","sourceRoot":"","sources":["../../../src/database/redis/redis.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"redis.module.js","sourceRoot":"","sources":["../../../src/database/redis/redis.module.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,14 @@
|
|
|
1
|
-
import { OnModuleDestroy } from '@nestjs/common';
|
|
2
|
-
import
|
|
3
|
-
export declare class RedisService implements OnModuleDestroy {
|
|
1
|
+
import { OnModuleInit, OnModuleDestroy } from '@nestjs/common';
|
|
2
|
+
import Redis from 'ioredis';
|
|
3
|
+
export declare class RedisService implements OnModuleInit, OnModuleDestroy {
|
|
4
4
|
private readonly redis;
|
|
5
|
+
private readonly logger;
|
|
5
6
|
constructor(redis: Redis);
|
|
7
|
+
onModuleInit(): Promise<void>;
|
|
8
|
+
onModuleDestroy(): Promise<void>;
|
|
6
9
|
getClient(): Redis;
|
|
10
|
+
ping(): Promise<boolean>;
|
|
11
|
+
getInfo(): Promise<any>;
|
|
7
12
|
get(key: string): Promise<string | null>;
|
|
8
13
|
set(key: string, value: string, ttl?: number): Promise<'OK'>;
|
|
9
14
|
del(key: string): Promise<number>;
|
|
@@ -22,5 +27,4 @@ export declare class RedisService implements OnModuleDestroy {
|
|
|
22
27
|
hmset(key: string, hash: Record<string, string>): Promise<'OK'>;
|
|
23
28
|
hgetall(key: string): Promise<Record<string, string>>;
|
|
24
29
|
mget(...keys: string[]): Promise<(string | null)[]>;
|
|
25
|
-
onModuleDestroy(): void;
|
|
26
30
|
}
|
|
@@ -11,28 +11,115 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
11
11
|
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
12
|
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
13
|
};
|
|
14
|
+
var RedisService_1;
|
|
14
15
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
16
|
exports.RedisService = void 0;
|
|
16
17
|
const common_1 = require("@nestjs/common");
|
|
17
18
|
const ioredis_1 = require("ioredis");
|
|
18
|
-
let RedisService = class RedisService {
|
|
19
|
+
let RedisService = RedisService_1 = class RedisService {
|
|
19
20
|
constructor(redis) {
|
|
20
21
|
this.redis = redis;
|
|
22
|
+
this.logger = new common_1.Logger(RedisService_1.name);
|
|
23
|
+
this.logger.log('RedisService initialized');
|
|
24
|
+
}
|
|
25
|
+
async onModuleInit() {
|
|
26
|
+
this.logger.log('Checking Redis connection status...');
|
|
27
|
+
try {
|
|
28
|
+
const pong = await this.ping();
|
|
29
|
+
if (pong) {
|
|
30
|
+
this.logger.log('Redis connection is healthy');
|
|
31
|
+
const info = await this.getInfo();
|
|
32
|
+
this.logger.log(`Redis server version: ${info.redis_version}`);
|
|
33
|
+
this.logger.log(`Redis server uptime: ${info.uptime_in_seconds} seconds`);
|
|
34
|
+
this.logger.log(`Redis memory used: ${info.used_memory_human}`);
|
|
35
|
+
this.logger.log(`Redis clients connected: ${info.connected_clients}`);
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
this.logger.warn('Redis ping failed, connection may not be healthy');
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
this.logger.error('Failed to check Redis connection', error.stack);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
async onModuleDestroy() {
|
|
46
|
+
this.logger.log('Closing Redis connection...');
|
|
47
|
+
try {
|
|
48
|
+
await this.redis.quit();
|
|
49
|
+
this.logger.log('Redis connection closed gracefully');
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
this.logger.error('Error closing Redis connection', error.stack);
|
|
53
|
+
try {
|
|
54
|
+
this.redis.disconnect();
|
|
55
|
+
this.logger.log('Redis connection force closed after quit failed');
|
|
56
|
+
}
|
|
57
|
+
catch (disconnectError) {
|
|
58
|
+
this.logger.error('Failed to force close Redis connection', disconnectError.stack);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
21
61
|
}
|
|
22
62
|
getClient() {
|
|
23
63
|
return this.redis;
|
|
24
64
|
}
|
|
65
|
+
async ping() {
|
|
66
|
+
try {
|
|
67
|
+
const result = await this.redis.ping();
|
|
68
|
+
return result === 'PONG';
|
|
69
|
+
}
|
|
70
|
+
catch (error) {
|
|
71
|
+
this.logger.error('Redis ping failed', error.stack);
|
|
72
|
+
return false;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
async getInfo() {
|
|
76
|
+
try {
|
|
77
|
+
const infoStr = await this.redis.info();
|
|
78
|
+
const info = {};
|
|
79
|
+
infoStr.split('\r\n').forEach(line => {
|
|
80
|
+
if (line && !line.startsWith('#')) {
|
|
81
|
+
const parts = line.split(':');
|
|
82
|
+
if (parts.length === 2) {
|
|
83
|
+
info[parts[0]] = parts[1];
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
return info;
|
|
88
|
+
}
|
|
89
|
+
catch (error) {
|
|
90
|
+
this.logger.error('Failed to get Redis info', error.stack);
|
|
91
|
+
return {};
|
|
92
|
+
}
|
|
93
|
+
}
|
|
25
94
|
async get(key) {
|
|
26
|
-
|
|
95
|
+
try {
|
|
96
|
+
return await this.redis.get(key);
|
|
97
|
+
}
|
|
98
|
+
catch (error) {
|
|
99
|
+
this.logger.error(`Error getting key ${key} from Redis`, error.stack);
|
|
100
|
+
throw error;
|
|
101
|
+
}
|
|
27
102
|
}
|
|
28
103
|
async set(key, value, ttl) {
|
|
29
|
-
|
|
30
|
-
|
|
104
|
+
try {
|
|
105
|
+
if (ttl) {
|
|
106
|
+
return await this.redis.set(key, value, 'EX', ttl);
|
|
107
|
+
}
|
|
108
|
+
return await this.redis.set(key, value);
|
|
109
|
+
}
|
|
110
|
+
catch (error) {
|
|
111
|
+
this.logger.error(`Error setting key ${key} in Redis`, error.stack);
|
|
112
|
+
throw error;
|
|
31
113
|
}
|
|
32
|
-
return this.redis.set(key, value);
|
|
33
114
|
}
|
|
34
115
|
async del(key) {
|
|
35
|
-
|
|
116
|
+
try {
|
|
117
|
+
return await this.redis.del(key);
|
|
118
|
+
}
|
|
119
|
+
catch (error) {
|
|
120
|
+
this.logger.error(`Error deleting key ${key} from Redis`, error.stack);
|
|
121
|
+
throw error;
|
|
122
|
+
}
|
|
36
123
|
}
|
|
37
124
|
async incr(key) {
|
|
38
125
|
return this.redis.incr(key);
|
|
@@ -113,14 +200,11 @@ let RedisService = class RedisService {
|
|
|
113
200
|
return Array(keys.length).fill(null);
|
|
114
201
|
}
|
|
115
202
|
}
|
|
116
|
-
onModuleDestroy() {
|
|
117
|
-
this.redis.disconnect();
|
|
118
|
-
}
|
|
119
203
|
};
|
|
120
204
|
exports.RedisService = RedisService;
|
|
121
|
-
exports.RedisService = RedisService = __decorate([
|
|
205
|
+
exports.RedisService = RedisService = RedisService_1 = __decorate([
|
|
122
206
|
(0, common_1.Injectable)(),
|
|
123
207
|
__param(0, (0, common_1.Inject)('REDIS_CLIENT')),
|
|
124
|
-
__metadata("design:paramtypes", [ioredis_1.
|
|
208
|
+
__metadata("design:paramtypes", [ioredis_1.default])
|
|
125
209
|
], RedisService);
|
|
126
210
|
//# sourceMappingURL=redis.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redis.service.js","sourceRoot":"","sources":["../../../src/database/redis/redis.service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"redis.service.js","sourceRoot":"","sources":["../../../src/database/redis/redis.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,12 +25,26 @@ let CustomValidationPipe = class CustomValidationPipe extends common_1.Validatio
|
|
|
25
25
|
}
|
|
26
26
|
catch (e) {
|
|
27
27
|
if (e instanceof common_1.BadRequestException) {
|
|
28
|
+
const response = e.getResponse();
|
|
28
29
|
const errors = [];
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
30
|
+
const messages = Array.isArray(response['message'])
|
|
31
|
+
? response['message']
|
|
32
|
+
: [response['message']];
|
|
33
|
+
for (const err of messages) {
|
|
34
|
+
if (typeof err === 'string') {
|
|
35
|
+
errors.push({
|
|
36
|
+
field: 'unknown',
|
|
37
|
+
message: err,
|
|
38
|
+
constraints: { error: err }
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
errors.push({
|
|
43
|
+
field: err.property,
|
|
44
|
+
message: `Validation failed for '${err.property}'`,
|
|
45
|
+
constraints: this.getConstraints(err),
|
|
46
|
+
});
|
|
47
|
+
}
|
|
34
48
|
}
|
|
35
49
|
throw new common_1.BadRequestException({
|
|
36
50
|
errorCode: 400,
|
|
@@ -38,6 +52,7 @@ let CustomValidationPipe = class CustomValidationPipe extends common_1.Validatio
|
|
|
38
52
|
errors,
|
|
39
53
|
});
|
|
40
54
|
}
|
|
55
|
+
throw e;
|
|
41
56
|
}
|
|
42
57
|
}
|
|
43
58
|
getConstraints(err) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"custom-validation.pipe.js","sourceRoot":"","sources":["../../src/pipes/custom-validation.pipe.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAMwB;AAGjB,IAAM,oBAAoB,GAA1B,MAAM,oBAAqB,SAAQ,uBAAc;IACtD,YAAY,OAA+B;QACzC,KAAK,CAAC;YACJ,SAAS,EAAE,IAAI;YACf,SAAS,EAAE,IAAI;YACf,GAAG,OAAO;SACX,CAAC,CAAC;IACL,CAAC;IACM,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,QAA0B;QACtD,IAAI,CAAC;YACH,OAAO,MAAM,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAChD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,YAAY,4BAAmB,EAAE,CAAC;gBACrC,MAAM,MAAM,GAAQ,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"custom-validation.pipe.js","sourceRoot":"","sources":["../../src/pipes/custom-validation.pipe.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAMwB;AAGjB,IAAM,oBAAoB,GAA1B,MAAM,oBAAqB,SAAQ,uBAAc;IACtD,YAAY,OAA+B;QACzC,KAAK,CAAC;YACJ,SAAS,EAAE,IAAI;YACf,SAAS,EAAE,IAAI;YACf,GAAG,OAAO;SACX,CAAC,CAAC;IACL,CAAC;IACM,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,QAA0B;QACtD,IAAI,CAAC;YACH,OAAO,MAAM,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAChD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,YAAY,4BAAmB,EAAE,CAAC;gBACrC,MAAM,QAAQ,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;gBACjC,MAAM,MAAM,GAAQ,EAAE,CAAC;gBAGvB,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;oBACjD,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC;oBACrB,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;gBAE1B,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;oBAC3B,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;wBAC5B,MAAM,CAAC,IAAI,CAAC;4BACV,KAAK,EAAE,SAAS;4BAChB,OAAO,EAAE,GAAG;4BACZ,WAAW,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE;yBAC5B,CAAC,CAAC;oBACL,CAAC;yBAAM,CAAC;wBACN,MAAM,CAAC,IAAI,CAAC;4BACV,KAAK,EAAE,GAAG,CAAC,QAAQ;4BACnB,OAAO,EAAE,0BAA0B,GAAG,CAAC,QAAQ,GAAG;4BAClD,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;yBACtC,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;gBAED,MAAM,IAAI,4BAAmB,CAAC;oBAC5B,SAAS,EAAE,GAAG;oBACd,OAAO,EAAE,mBAAmB;oBAC5B,MAAM;iBACP,CAAC,CAAC;YACL,CAAC;YAGD,MAAM,CAAC,CAAC;QACV,CAAC;IACH,CAAC;IAED,cAAc,CAAC,GAAG;QAChB,IAAI,OAAO,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC3B,OAAO,GAAG,CAAC;QACb,CAAC;QACD,IAAI,OAAO,GAAG,IAAI,QAAQ,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;YAC9C,OAAO,GAAG,CAAC,WAAW,CAAC;QACzB,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC;IAED,UAAU,CAAC,KAAK;QACd,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,YAAY,EAAE,EAAE;YAChD,IAAI,YAAY,CAAC,QAAQ,IAAI,YAAY,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9D,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YAChD,CAAC;YACD,IAAI,YAAY,CAAC,WAAW,EAAE,CAAC;gBAC7B,OAAO,YAAY,CAAC,WAAW,CAAC;YAClC,CAAC;YACD,OAAO,WAAW,CAAC;QACrB,CAAC,EAAE,EAAE,CAAC,CAAC;IACT,CAAC;CACF,CAAA;AAtEY,oDAAoB;+BAApB,oBAAoB;IADhC,IAAA,mBAAU,GAAE;;GACA,oBAAoB,CAsEhC"}
|