@eventista/ticketing-common 1.1.19-dev.4 → 1.1.22

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.
@@ -11,7 +11,13 @@ const common_1 = require("@nestjs/common");
11
11
  const config_1 = require("@nestjs/config");
12
12
  const redis_service_1 = require("./redis.service");
13
13
  const custom_logger_1 = require("../../logger/custom.logger");
14
+ const ioredis_1 = require("ioredis");
14
15
  const record_lock_service_1 = require("./record-lock.service");
16
+ var RedisProviderType;
17
+ (function (RedisProviderType) {
18
+ RedisProviderType["CLUSTER"] = "cluster";
19
+ RedisProviderType["AZURE"] = "azure";
20
+ })(RedisProviderType || (RedisProviderType = {}));
15
21
  const RedisClusterProvider = {
16
22
  provide: 'REDIS_CLUSTER',
17
23
  useFactory: (configService) => {
@@ -109,6 +115,89 @@ const RedisClusterProvider = {
109
115
  },
110
116
  inject: [config_1.ConfigService],
111
117
  };
118
+ const AzureRedisProvider = {
119
+ provide: 'AZURE_REDIS_CLIENT',
120
+ useFactory: (configService) => {
121
+ const logger = new custom_logger_1.CustomLogger('AzureRedisModule');
122
+ logger.log('Initializing Azure Redis Enterprise connection...');
123
+ const host = configService.get('REDIS_HOST', 'localhost');
124
+ const port = configService.get('REDIS_PORT', 10000);
125
+ const password = configService.get('REDIS_ACCESS_KEY', '');
126
+ const enableTls = configService.get('REDIS_TLS', true);
127
+ logger.log(`Connecting to Azure Redis Enterprise at ${host}:${port} (TLS: ${enableTls})`);
128
+ const redisConfig = {
129
+ host: host,
130
+ port: port,
131
+ password: password,
132
+ tls: enableTls ? {
133
+ servername: host,
134
+ rejectUnauthorized: true,
135
+ } : undefined,
136
+ connectTimeout: Number(configService.get('REDIS_CONNECT_TIMEOUT', 10000)),
137
+ commandTimeout: Number(configService.get('REDIS_COMMAND_TIMEOUT', 30000)),
138
+ lazyConnect: true,
139
+ retryStrategy: (times) => {
140
+ logger.warn(`Azure Redis connection attempt ${times} failed. Retrying...`);
141
+ if (times > 10) {
142
+ logger.error('Azure Redis connection failed after 10 attempts. Giving up.');
143
+ return null;
144
+ }
145
+ const delay = Math.min(times * 200, 5000);
146
+ logger.log(`Retrying Azure Redis connection in ${delay}ms`);
147
+ return delay;
148
+ },
149
+ keepAlive: 30000,
150
+ noDelay: true,
151
+ enableReadyCheck: true,
152
+ enableOfflineQueue: true,
153
+ maxRetriesPerRequest: 3,
154
+ family: 4,
155
+ db: 0,
156
+ };
157
+ const redis = new ioredis_1.Redis(redisConfig);
158
+ redis.on('connect', () => {
159
+ logger.log('Connected to Azure Redis Enterprise');
160
+ });
161
+ redis.on('ready', () => {
162
+ logger.log('Azure Redis Enterprise is ready');
163
+ logger.log(`Connected to: ${host}:${port} (TLS: ${enableTls})`);
164
+ });
165
+ redis.on('error', (err) => {
166
+ logger.error(`Azure Redis Enterprise error: ${err.message}`, err.stack);
167
+ });
168
+ redis.on('close', () => {
169
+ logger.warn('Azure Redis Enterprise connection closed - Will attempt to reconnect automatically');
170
+ });
171
+ redis.on('reconnecting', (delay) => {
172
+ logger.log(`Azure Redis Enterprise reconnecting in ${delay}ms`);
173
+ });
174
+ redis.on('end', () => {
175
+ logger.warn('Azure Redis Enterprise connection ended');
176
+ });
177
+ redis.connect().catch((err) => {
178
+ logger.error('Failed to connect to Azure Redis Enterprise:', err.message);
179
+ });
180
+ return redis;
181
+ },
182
+ inject: [config_1.ConfigService],
183
+ };
184
+ const RedisProvider = {
185
+ provide: 'REDIS_CLUSTER',
186
+ useFactory: (configService) => {
187
+ const logger = new custom_logger_1.CustomLogger('RedisModule');
188
+ const providerType = configService.get('REDIS_PROVIDER', RedisProviderType.CLUSTER).toLowerCase();
189
+ logger.log(`Using Redis Provider: ${providerType}`);
190
+ if (providerType === RedisProviderType.AZURE) {
191
+ const azureFactory = AzureRedisProvider.useFactory;
192
+ return azureFactory(configService);
193
+ }
194
+ else {
195
+ const clusterFactory = RedisClusterProvider.useFactory;
196
+ return clusterFactory(configService);
197
+ }
198
+ },
199
+ inject: [config_1.ConfigService],
200
+ };
112
201
  let RedisModule = class RedisModule {
113
202
  };
114
203
  exports.RedisModule = RedisModule;
@@ -117,7 +206,7 @@ exports.RedisModule = RedisModule = __decorate([
117
206
  (0, common_1.Module)({
118
207
  imports: [config_1.ConfigModule],
119
208
  providers: [
120
- RedisClusterProvider,
209
+ RedisProvider,
121
210
  redis_service_1.RedisService,
122
211
  record_lock_service_1.RecordLockService,
123
212
  ],
@@ -1 +1 @@
1
- {"version":3,"file":"redis.module.js","sourceRoot":"","sources":["../../../src/database/redis/redis.module.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"redis.module.js","sourceRoot":"","sources":["../../../src/database/redis/redis.module.ts"],"names":[],"mappings":"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"}