micro-generate 1.3.0 → 1.3.2
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/cli/generators/feature-generator.js +18 -22
- package/dist/cli/generators/feature-generator.js.map +1 -1
- package/dist/cli/generators/init-generator.js +186 -172
- package/dist/cli/generators/init-generator.js.map +1 -1
- package/dist/core/MicroserviceServer.d.ts +1 -0
- package/dist/core/MicroserviceServer.js +4 -1
- package/dist/core/MicroserviceServer.js.map +1 -1
- package/dist/database/redis.d.ts +19 -0
- package/dist/database/redis.js +163 -8
- package/dist/database/redis.js.map +1 -1
- package/package.json +1 -1
|
@@ -319,9 +319,8 @@ export default () => {
|
|
|
319
319
|
`;
|
|
320
320
|
}
|
|
321
321
|
if (useRedis) {
|
|
322
|
-
//
|
|
323
|
-
serviceImports += `import {
|
|
324
|
-
serviceImports += `import { createRedisRepository } from '../../db/redis/redis.js';\n`;
|
|
322
|
+
// Import from src/database/redis.js which matches user structure
|
|
323
|
+
serviceImports += `import { getRedisConnector, createRedisRepository } from '../../database/redis.js';\n`;
|
|
325
324
|
// Add repository property to class
|
|
326
325
|
// Logic to determine client access method
|
|
327
326
|
const redisDbNum = options.redisDb || 0;
|
|
@@ -345,28 +344,11 @@ export default () => {
|
|
|
345
344
|
// I should use `redisConnector` pattern if possible.
|
|
346
345
|
// If I look at `server.ts`, it imports `createRedisConnector`.
|
|
347
346
|
// The feature generator imports `getRedisClient` from `../../db/redis/client.js`.
|
|
348
|
-
// I should verify what `../../db/redis/client.js` looks like or is expected to look like.
|
|
349
|
-
// Since this is a generator, maybe I should assume `getRedisClient` returns the Connector?
|
|
350
|
-
// Or maybe `getRedisClient` returns the DEFAULT client.
|
|
351
|
-
// Implementation Decision:
|
|
352
|
-
// I will generate code that assumes `getRedisClient` returns the *connector* if we need dynamic power,
|
|
353
|
-
// OR I will simply wrap the call.
|
|
354
|
-
// If `getRedisClient` returns the `RedisConnector` instance:
|
|
355
|
-
// `() => getRedisClient().getConnection(${redisDbNum})`
|
|
356
|
-
// Let's assume I need to update the import to be safe, or just provide a getter.
|
|
357
|
-
// Revised Strategy:
|
|
358
|
-
// Use `createRedisRepository` which accepts a getter.
|
|
359
|
-
// If DB > 0:
|
|
360
|
-
// `private redis = createRedisRepository(async () => (await getRedisClient()).getConnection(${redisDbNum}), '${name}:');`
|
|
361
|
-
// Checks if `getRedisClient` returns connector or client.
|
|
362
|
-
// I will assume `getRedisClient` returns the `RedisConnector` instance for now as that enables the feature.
|
|
363
|
-
// If not, the user will have to adjust `client.ts`.
|
|
364
347
|
if (redisDbNum > 0) {
|
|
365
348
|
serviceClassBody = `
|
|
366
349
|
private redis = createRedisRepository(
|
|
367
350
|
async () => {
|
|
368
|
-
|
|
369
|
-
return connector.getConnection(${redisDbNum});
|
|
351
|
+
return getRedisConnector().getConnection(${redisDbNum});
|
|
370
352
|
},
|
|
371
353
|
'${name}:'
|
|
372
354
|
);
|
|
@@ -374,9 +356,23 @@ export default () => {
|
|
|
374
356
|
}
|
|
375
357
|
else {
|
|
376
358
|
serviceClassBody = `
|
|
377
|
-
private redis = createRedisRepository(
|
|
359
|
+
private redis = createRedisRepository(
|
|
360
|
+
async () => {
|
|
361
|
+
return getRedisConnector().getConnection(0);
|
|
362
|
+
},
|
|
363
|
+
'${name}:'
|
|
364
|
+
);
|
|
378
365
|
` + serviceClassBody;
|
|
379
366
|
}
|
|
367
|
+
serviceClassBody += `
|
|
368
|
+
async getCache(key: string): Promise<any> {
|
|
369
|
+
return this.redis.find(key);
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
async setCache(key: string, value: string): Promise<any> {
|
|
373
|
+
return this.redis.saveTTL(key, value, 3600);
|
|
374
|
+
}
|
|
375
|
+
`;
|
|
380
376
|
}
|
|
381
377
|
const serviceContent = `${serviceImports}
|
|
382
378
|
export class ${pascalName}Service {${serviceClassBody}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feature-generator.js","sourceRoot":"","sources":["../../../src/cli/generators/feature-generator.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"feature-generator.js","sourceRoot":"","sources":["../../../src/cli/generators/feature-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,13 +15,13 @@ export const generateInit = async (options) => {
|
|
|
15
15
|
path.join(projectPath, 'src', 'config'),
|
|
16
16
|
];
|
|
17
17
|
if (useRedis) {
|
|
18
|
-
dirs.push(path.join(projectPath, 'src', '
|
|
18
|
+
dirs.push(path.join(projectPath, 'src', 'database', 'redis'));
|
|
19
19
|
}
|
|
20
20
|
if (useMongo) {
|
|
21
|
-
dirs.push(path.join(projectPath, 'src', '
|
|
21
|
+
dirs.push(path.join(projectPath, 'src', 'database', 'mongo'));
|
|
22
22
|
}
|
|
23
23
|
if (useMySQL) {
|
|
24
|
-
dirs.push(path.join(projectPath, 'src', '
|
|
24
|
+
dirs.push(path.join(projectPath, 'src', 'database', 'mysql'));
|
|
25
25
|
}
|
|
26
26
|
for (const dir of dirs) {
|
|
27
27
|
await fs.ensureDir(dir);
|
|
@@ -92,205 +92,209 @@ export function getEnv(name: string): string {
|
|
|
92
92
|
}
|
|
93
93
|
`;
|
|
94
94
|
await fs.writeFile(path.join(projectPath, 'src', 'utils', 'config.ts'), configUtilContent);
|
|
95
|
-
// 5. src/
|
|
95
|
+
// 5. src/database/redis.ts
|
|
96
96
|
if (useRedis) {
|
|
97
|
-
const
|
|
97
|
+
const redisContent = `import { Redis, RedisOptions } from 'ioredis';
|
|
98
|
+
import { logger } from '../../utils/logger.js'; // Ensure logger exists or adjust import
|
|
99
|
+
|
|
100
|
+
export class RedisConnector {
|
|
101
|
+
private defaultClient: Redis | null = null;
|
|
102
|
+
private clients: Map<number, Redis> = new Map();
|
|
103
|
+
private options: RedisOptions = {};
|
|
104
|
+
private defaultDb: number = 0;
|
|
105
|
+
private host?: string;
|
|
106
|
+
|
|
107
|
+
constructor(optionsOrUrl: RedisOptions | string) {
|
|
108
|
+
if (typeof optionsOrUrl === 'string') {
|
|
109
|
+
this.options = {
|
|
110
|
+
retryStrategy: (times: number) => Math.min(times * 50, 2000)
|
|
111
|
+
};
|
|
112
|
+
this.host = undefined;
|
|
113
|
+
(this as any).url = optionsOrUrl;
|
|
114
|
+
} else {
|
|
115
|
+
this.options = {
|
|
116
|
+
retryStrategy: (times: number) => Math.min(times * 50, 2000),
|
|
117
|
+
...optionsOrUrl
|
|
118
|
+
};
|
|
119
|
+
this.defaultDb = optionsOrUrl.db || 0;
|
|
120
|
+
this.host = optionsOrUrl.host;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
98
123
|
|
|
99
|
-
|
|
124
|
+
async connect(): Promise<void> {
|
|
125
|
+
if (this.defaultClient) {
|
|
126
|
+
console.log('Redis default client already connected');
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
try {
|
|
130
|
+
this.defaultClient = this.createClient(this.defaultDb);
|
|
131
|
+
this.clients.set(this.defaultDb, this.defaultClient);
|
|
132
|
+
await this.defaultClient.connect();
|
|
133
|
+
} catch (error) {
|
|
134
|
+
console.error('Failed to connect to Redis', error);
|
|
135
|
+
throw error;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
100
138
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
139
|
+
private createClient(db: number): Redis {
|
|
140
|
+
let client: Redis;
|
|
141
|
+
const url = (this as any).url;
|
|
142
|
+
|
|
143
|
+
if (url) {
|
|
144
|
+
client = new Redis(url, { ...this.options, db, lazyConnect: true });
|
|
145
|
+
} else {
|
|
146
|
+
client = new Redis({ ...this.options, db, lazyConnect: true });
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
client.on('connect', () => console.log(\`🔴 Redis connected to db \${db}\`));
|
|
150
|
+
client.on('error', (err) => console.error(\`Redis error on db \${db}\`, err));
|
|
151
|
+
return client;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
async disconnect(): Promise<void> {
|
|
155
|
+
const disconnectPromises: Promise<void>[] = [];
|
|
156
|
+
for (const [db, client] of this.clients.entries()) {
|
|
157
|
+
disconnectPromises.push(client.quit().catch(() => client.disconnect()));
|
|
158
|
+
}
|
|
159
|
+
await Promise.all(disconnectPromises);
|
|
160
|
+
this.clients.clear();
|
|
161
|
+
this.defaultClient = null;
|
|
162
|
+
}
|
|
104
163
|
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
164
|
+
getClient(): Redis {
|
|
165
|
+
if (!this.defaultClient) throw new Error('Redis not connected');
|
|
166
|
+
return this.defaultClient;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
async getConnection(db: number): Promise<Redis> {
|
|
170
|
+
if (db === this.defaultDb) {
|
|
171
|
+
if (!this.defaultClient) await this.connect();
|
|
172
|
+
return this.defaultClient!;
|
|
173
|
+
}
|
|
174
|
+
if (this.clients.has(db)) {
|
|
175
|
+
const client = this.clients.get(db)!;
|
|
176
|
+
if (client.status === 'wait') await client.connect();
|
|
177
|
+
return client;
|
|
178
|
+
}
|
|
179
|
+
const newClient = this.createClient(db);
|
|
180
|
+
this.clients.set(db, newClient);
|
|
181
|
+
await newClient.connect();
|
|
182
|
+
return newClient;
|
|
108
183
|
}
|
|
109
|
-
return redisInstance;
|
|
110
184
|
}
|
|
111
|
-
`;
|
|
112
|
-
await fs.writeFile(path.join(projectPath, 'src', 'db', 'redis', 'client.ts'), redisClientContent);
|
|
113
|
-
// Standardized Redis Repository
|
|
114
|
-
const redisRepositoryContent = `import { Redis } from 'ioredis';
|
|
115
185
|
|
|
116
|
-
|
|
186
|
+
export let redisConnectorInstance: RedisConnector | null = null;
|
|
117
187
|
|
|
118
|
-
export const
|
|
119
|
-
|
|
120
|
-
|
|
188
|
+
export const setRedisConnectorInstance = (connector: RedisConnector) => {
|
|
189
|
+
redisConnectorInstance = connector;
|
|
190
|
+
};
|
|
191
|
+
|
|
192
|
+
export const getRedisConnector = (): RedisConnector => {
|
|
193
|
+
if (!redisConnectorInstance) {
|
|
194
|
+
throw new Error('Redis connector not initialized.');
|
|
195
|
+
}
|
|
196
|
+
return redisConnectorInstance;
|
|
197
|
+
};
|
|
198
|
+
|
|
199
|
+
export const createRedisRepository = (getDb: () => (Redis | Promise<Redis>), keyPrefix: string) => {
|
|
121
200
|
const promiseFunct = (err: any, response: any, resolve: (value: any) => void, reject: (reason?: any) => void) => {
|
|
122
|
-
if (err)
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
201
|
+
if (err) reject(err);
|
|
202
|
+
else resolve(response);
|
|
203
|
+
};
|
|
204
|
+
|
|
205
|
+
const resolveDb = async (): Promise<Redis> => {
|
|
206
|
+
const dbOrPromise = getDb();
|
|
207
|
+
return dbOrPromise instanceof Promise ? await dbOrPromise : dbOrPromise;
|
|
127
208
|
};
|
|
128
209
|
|
|
129
210
|
return {
|
|
130
211
|
find: async (_id: string) => {
|
|
131
|
-
const db =
|
|
132
|
-
return new Promise((resolve, reject) => {
|
|
133
|
-
db.get(_id, (err, response) => {
|
|
134
|
-
promiseFunct(err, response, resolve, reject);
|
|
135
|
-
});
|
|
136
|
-
});
|
|
137
|
-
},
|
|
138
|
-
|
|
139
|
-
findKeys: async (_id: string) => {
|
|
140
|
-
const db = getDb();
|
|
141
|
-
return new Promise((resolve, reject) => {
|
|
142
|
-
db.keys(_id, (err, response) => {
|
|
143
|
-
if (response && response.length > 0) {
|
|
144
|
-
promiseFunct(err, response, resolve, reject);
|
|
145
|
-
} else {
|
|
146
|
-
promiseFunct(null, ['No genero datos'], resolve, reject);
|
|
147
|
-
}
|
|
148
|
-
});
|
|
149
|
-
});
|
|
150
|
-
},
|
|
151
|
-
|
|
152
|
-
findAll: async () => {
|
|
153
|
-
const db = getDb();
|
|
212
|
+
const db = await resolveDb();
|
|
154
213
|
return new Promise((resolve, reject) => {
|
|
155
|
-
db.
|
|
156
|
-
if (response && response.length > 0) {
|
|
157
|
-
db.mget(response, (err, response2) => {
|
|
158
|
-
promiseFunct(err, response2, resolve, reject);
|
|
159
|
-
});
|
|
160
|
-
} else {
|
|
161
|
-
promiseFunct(null, ['No genero datos'], resolve, reject);
|
|
162
|
-
}
|
|
163
|
-
});
|
|
214
|
+
db.get(_id, (err, response) => promiseFunct(err, response, resolve, reject));
|
|
164
215
|
});
|
|
165
216
|
},
|
|
166
|
-
|
|
167
|
-
save: async (_id: string, _data: any) => {
|
|
168
|
-
const db = getDb();
|
|
169
|
-
return new Promise((resolve, reject) => {
|
|
170
|
-
db.set(_id, _data, (err, response) => {
|
|
171
|
-
promiseFunct(err, response, resolve, reject);
|
|
172
|
-
});
|
|
173
|
-
});
|
|
174
|
-
},
|
|
175
|
-
|
|
176
217
|
saveTTL: async (_id: string, _data: any, ttl: number) => {
|
|
177
|
-
const db =
|
|
218
|
+
const db = await resolveDb();
|
|
178
219
|
return new Promise((resolve, reject) => {
|
|
179
220
|
db.set(_id, _data, (err, response) => {
|
|
180
|
-
if (err)
|
|
181
|
-
|
|
182
|
-
} else {
|
|
221
|
+
if (err) reject(err);
|
|
222
|
+
else {
|
|
183
223
|
db.expire(_id, ttl);
|
|
184
224
|
resolve(response);
|
|
185
225
|
}
|
|
186
226
|
});
|
|
187
227
|
});
|
|
188
228
|
},
|
|
189
|
-
|
|
190
|
-
addTTL: async (_id: string, ttl: number) => {
|
|
191
|
-
const db = getDb();
|
|
192
|
-
return db.expire(_id, ttl);
|
|
193
|
-
},
|
|
194
|
-
|
|
195
|
-
getTTL: async (_id: string) => {
|
|
196
|
-
const db = getDb();
|
|
197
|
-
return new Promise((resolve, reject) => {
|
|
198
|
-
db.ttl(_id, (err, response) => {
|
|
199
|
-
promiseFunct(err, response, resolve, reject);
|
|
200
|
-
});
|
|
201
|
-
});
|
|
202
|
-
},
|
|
203
|
-
|
|
204
|
-
incr: async (_id: string) => {
|
|
205
|
-
const db = getDb();
|
|
206
|
-
return new Promise((resolve, reject) => {
|
|
207
|
-
db.incr(_id, (err, response) => {
|
|
208
|
-
promiseFunct(err, response, resolve, reject);
|
|
209
|
-
});
|
|
210
|
-
});
|
|
211
|
-
},
|
|
212
|
-
|
|
213
|
-
sadd: async (_id: string, _data: any) => {
|
|
214
|
-
const db = getDb();
|
|
215
|
-
return new Promise((resolve, reject) => {
|
|
216
|
-
db.sadd(_id, _data, (err, response) => {
|
|
217
|
-
promiseFunct(err, response, resolve, reject);
|
|
218
|
-
});
|
|
219
|
-
});
|
|
220
|
-
},
|
|
221
|
-
|
|
222
|
-
sismember: async (_id: string, _data: any) => {
|
|
223
|
-
const db = getDb();
|
|
224
|
-
return new Promise((resolve, reject) => {
|
|
225
|
-
db.sismember(_id, _data, (err, response) => {
|
|
226
|
-
promiseFunct(err, response, resolve, reject);
|
|
227
|
-
});
|
|
228
|
-
});
|
|
229
|
-
},
|
|
230
|
-
|
|
231
|
-
sisremove: async (_id: string, _data: any) => {
|
|
232
|
-
const db = getDb();
|
|
233
|
-
return new Promise((resolve, reject) => {
|
|
234
|
-
db.srem(_id, _data, (err, response) => {
|
|
235
|
-
promiseFunct(err, response, resolve, reject);
|
|
236
|
-
});
|
|
237
|
-
});
|
|
238
|
-
},
|
|
239
|
-
|
|
240
|
-
smembers: async (_id: string) => {
|
|
241
|
-
const db = getDb();
|
|
242
|
-
return new Promise((resolve, reject) => {
|
|
243
|
-
db.smembers(_id, (err, response) => {
|
|
244
|
-
promiseFunct(err, response, resolve, reject);
|
|
245
|
-
});
|
|
246
|
-
});
|
|
247
|
-
},
|
|
248
|
-
|
|
249
|
-
sdiff: async (_id: string) => {
|
|
250
|
-
return new Promise((resolve, reject) => {
|
|
251
|
-
console.log('sdiff called with', _id);
|
|
252
|
-
resolve([]);
|
|
253
|
-
});
|
|
254
|
-
},
|
|
255
|
-
|
|
256
|
-
clear: async (key: string) => {
|
|
257
|
-
const db = getDb();
|
|
258
|
-
return new Promise((resolve, reject) => {
|
|
259
|
-
db.del(key, (err, response) => {
|
|
260
|
-
promiseFunct(err, response, resolve, reject);
|
|
261
|
-
});
|
|
262
|
-
});
|
|
263
|
-
}
|
|
229
|
+
// ... (Add other methods as needed, simplified for init)
|
|
264
230
|
};
|
|
265
231
|
};
|
|
232
|
+
|
|
233
|
+
export function createRedisConnector(urlOrOptions: string | RedisOptions): RedisConnector {
|
|
234
|
+
const connector = typeof urlOrOptions === 'string'
|
|
235
|
+
? new RedisConnector(urlOrOptions)
|
|
236
|
+
: new RedisConnector(urlOrOptions);
|
|
237
|
+
setRedisConnectorInstance(connector);
|
|
238
|
+
return connector;
|
|
239
|
+
}
|
|
266
240
|
`;
|
|
267
|
-
await fs.writeFile(path.join(projectPath, 'src', '
|
|
241
|
+
await fs.writeFile(path.join(projectPath, 'src', 'database', 'redis.ts'), redisContent);
|
|
268
242
|
}
|
|
269
|
-
//
|
|
243
|
+
// src/database/mongo.ts
|
|
270
244
|
if (useMongo) {
|
|
271
|
-
const
|
|
272
|
-
import mongoose from 'mongoose';
|
|
245
|
+
const mongoContent = `import mongoose from 'mongoose';
|
|
273
246
|
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
247
|
+
export interface MongoDBOptions {
|
|
248
|
+
uri: string;
|
|
249
|
+
options?: mongoose.ConnectOptions;
|
|
250
|
+
secondaryConnections?: Record<string, string>;
|
|
278
251
|
}
|
|
279
252
|
|
|
280
|
-
export
|
|
281
|
-
|
|
282
|
-
|
|
253
|
+
export class MongoDBConnector {
|
|
254
|
+
private uri: string;
|
|
255
|
+
private options: mongoose.ConnectOptions;
|
|
256
|
+
private secondaryConnectionsConfig: Record<string, string> = {};
|
|
257
|
+
private isConnected = false;
|
|
258
|
+
private secondaryConnections: Map<string, mongoose.Connection> = new Map();
|
|
259
|
+
|
|
260
|
+
constructor(config: MongoDBOptions) {
|
|
261
|
+
this.uri = config.uri;
|
|
262
|
+
this.options = config.options || {};
|
|
263
|
+
this.secondaryConnectionsConfig = config.secondaryConnections || {};
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
async connect(): Promise<void> {
|
|
267
|
+
if (this.isConnected) return;
|
|
268
|
+
try {
|
|
269
|
+
await mongoose.connect(this.uri, this.options);
|
|
270
|
+
this.isConnected = true;
|
|
271
|
+
console.log('✅ Primary MongoDB connected');
|
|
272
|
+
|
|
273
|
+
const secondaryPromises = Object.entries(this.secondaryConnectionsConfig).map(async ([name, uri]) => {
|
|
274
|
+
const conn = mongoose.createConnection(uri, this.options);
|
|
275
|
+
await conn.asPromise();
|
|
276
|
+
this.secondaryConnections.set(name, conn);
|
|
277
|
+
console.log(\`✅ Secondary MongoDB '\${name}' connected\`);
|
|
278
|
+
});
|
|
279
|
+
await Promise.all(secondaryPromises);
|
|
280
|
+
} catch (error) {
|
|
281
|
+
console.error('MongoDB connection error:', error);
|
|
282
|
+
throw error;
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
getSecondaryConnection(name: string): mongoose.Connection | undefined {
|
|
287
|
+
return this.secondaryConnections.get(name);
|
|
283
288
|
}
|
|
284
|
-
return mongoConnector;
|
|
285
289
|
}
|
|
286
290
|
|
|
287
|
-
export function
|
|
288
|
-
return
|
|
291
|
+
export function createMongoDBConnector(uri: string, secondaryConnections?: Record<string, string>): MongoDBConnector {
|
|
292
|
+
return new MongoDBConnector({ uri, secondaryConnections });
|
|
289
293
|
}
|
|
290
294
|
`;
|
|
291
|
-
await fs.writeFile(path.join(projectPath, 'src', '
|
|
295
|
+
await fs.writeFile(path.join(projectPath, 'src', 'database', 'mongo.ts'), mongoContent);
|
|
292
296
|
}
|
|
293
|
-
// 5.2 src/
|
|
297
|
+
// 5.2 src/database/mysql/client.ts (Only if MySQL is enabled)
|
|
294
298
|
if (useMySQL) {
|
|
295
299
|
const mysqlClientContent = `import { Sequelize } from 'sequelize';
|
|
296
300
|
|
|
@@ -370,25 +374,30 @@ export default () => {
|
|
|
370
374
|
import { typeDefs, resolvers } from './features/index.js';
|
|
371
375
|
import * as dotenv from 'dotenv';\n`;
|
|
372
376
|
if (useMongo) {
|
|
373
|
-
indexImports += `import {
|
|
377
|
+
indexImports += `import { createMongoDBConnector } from './database/mongo.js';\n`;
|
|
374
378
|
}
|
|
375
379
|
if (useRedis) {
|
|
376
|
-
indexImports += `import {
|
|
380
|
+
indexImports += `import { createRedisConnector } from './database/redis.js';\n`;
|
|
377
381
|
}
|
|
378
382
|
if (useMySQL) {
|
|
379
|
-
indexImports += `import { MySQLConnector, setMySQLConnector } from './
|
|
383
|
+
indexImports += `import { MySQLConnector, setMySQLConnector } from './database/mysql/client.js';\n`;
|
|
380
384
|
}
|
|
381
385
|
const indexConfig = [];
|
|
382
386
|
indexConfig.push(`port: parseInt(process.env.PORT || '4000')`);
|
|
383
387
|
if (useMongo) {
|
|
384
388
|
indexConfig.push(`mongoUri: process.env.MONGO_URI || ''`);
|
|
385
389
|
}
|
|
390
|
+
let redisConnectorInit = '';
|
|
386
391
|
if (useRedis) {
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
+
redisConnectorInit = `
|
|
393
|
+
const redisConnector = createRedisConnector({
|
|
394
|
+
host: process.env.REDIS_HOST || 'localhost',
|
|
395
|
+
port: parseInt(process.env.REDIS_PORT || '6379'),
|
|
396
|
+
password: process.env.REDIS_PASSWORD,
|
|
397
|
+
db: parseInt(process.env.REDIS_DB || '0')
|
|
398
|
+
});
|
|
399
|
+
`;
|
|
400
|
+
indexConfig.push(`redisConnector: redisConnector`);
|
|
392
401
|
}
|
|
393
402
|
if (useMongo && dbNames.length > 0) {
|
|
394
403
|
const secondaryConfig = dbNames.map(name => {
|
|
@@ -404,6 +413,8 @@ import * as dotenv from 'dotenv';\n`;
|
|
|
404
413
|
const indexContent = `${indexImports}
|
|
405
414
|
dotenv.config();
|
|
406
415
|
|
|
416
|
+
${redisConnectorInit}
|
|
417
|
+
|
|
407
418
|
const server = new MicroserviceServer({
|
|
408
419
|
${indexConfig.join(',\n ')},
|
|
409
420
|
typeDefs,
|
|
@@ -440,9 +451,12 @@ setMySQLConnector(mysqlConnector);
|
|
|
440
451
|
|
|
441
452
|
server.start().then(async () => {
|
|
442
453
|
${useMongo ? `if (server.getMongoDBConnector()) {
|
|
443
|
-
|
|
454
|
+
// Optional: Expose mongo connector global if needed,
|
|
455
|
+
// but current pattern might check server.getMongoDBConnector()
|
|
444
456
|
}` : ''}
|
|
445
457
|
|
|
458
|
+
${useRedis ? `await redisConnector.connect();` : ''}
|
|
459
|
+
|
|
446
460
|
${useMySQL ? `await mysqlConnector.connect();` : ''}
|
|
447
461
|
|
|
448
462
|
console.log('Server initialized');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init-generator.js","sourceRoot":"","sources":["../../../src/cli/generators/init-generator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAAE,OAA+B,EAAE,EAAE;IAClE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,IAAI,EAAE,QAAQ,GAAG,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,OAAO,GAAG,EAAE,EAAE,YAAY,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC;IAC9G,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;IAEnD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,0BAA0B,GAAG,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC;IAE1E,wBAAwB;IACxB,MAAM,IAAI,GAAG;QACT,WAAW;QACX,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC;QAC7B,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,UAAU,CAAC;QACzC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,UAAU,CAAC;QACzC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,OAAO,CAAC;QACtC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,QAAQ,CAAC;KAC1C,CAAC;IAEF,IAAI,QAAQ,EAAE,CAAC;QACX,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"init-generator.js","sourceRoot":"","sources":["../../../src/cli/generators/init-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,7 +18,10 @@ export class MicroserviceServer {
|
|
|
18
18
|
constructor(config) {
|
|
19
19
|
this.config = config;
|
|
20
20
|
this.app = express();
|
|
21
|
-
if (config.
|
|
21
|
+
if (config.redisConnector) {
|
|
22
|
+
this.redisConnector = config.redisConnector;
|
|
23
|
+
}
|
|
24
|
+
else if (config.redisHost && config.redisPort) {
|
|
22
25
|
this.redisConnector = createRedisConnector({
|
|
23
26
|
host: config.redisHost,
|
|
24
27
|
port: config.redisPort,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MicroserviceServer.js","sourceRoot":"","sources":["../../src/core/MicroserviceServer.ts"],"names":[],"mappings":"AAAA,OAAO,OAAoB,MAAM,SAAS,CAAC;AAC3C,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAoB,MAAM,sBAAsB,CAAC;AAChF,OAAO,EAAE,oBAAoB,EAAkB,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,OAAO,EAAE,yCAAyC,EAAE,MAAM,2CAA2C,CAAC;AACtG,OAAO,EAAE,qCAAqC,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"MicroserviceServer.js","sourceRoot":"","sources":["../../src/core/MicroserviceServer.ts"],"names":[],"mappings":"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"}
|
package/dist/database/redis.d.ts
CHANGED
|
@@ -36,6 +36,25 @@ export declare class RedisConnector {
|
|
|
36
36
|
*/
|
|
37
37
|
get connected(): boolean;
|
|
38
38
|
}
|
|
39
|
+
export declare let redisConnectorInstance: RedisConnector | null;
|
|
40
|
+
export declare const setRedisConnectorInstance: (connector: RedisConnector) => void;
|
|
41
|
+
export declare const getRedisConnector: () => RedisConnector;
|
|
42
|
+
export declare const createRedisRepository: (getDb: () => (Redis | Promise<Redis>), keyPrefix: string) => {
|
|
43
|
+
find: (_id: string) => Promise<unknown>;
|
|
44
|
+
findKeys: (_id: string) => Promise<unknown>;
|
|
45
|
+
findAll: () => Promise<unknown>;
|
|
46
|
+
save: (_id: string, _data: any) => Promise<unknown>;
|
|
47
|
+
saveTTL: (_id: string, _data: any, ttl: number) => Promise<unknown>;
|
|
48
|
+
addTTL: (_id: string, ttl: number) => Promise<number>;
|
|
49
|
+
getTTL: (_id: string) => Promise<unknown>;
|
|
50
|
+
incr: (_id: string) => Promise<unknown>;
|
|
51
|
+
sadd: (_id: string, _data: any) => Promise<unknown>;
|
|
52
|
+
sismember: (_id: string, _data: any) => Promise<unknown>;
|
|
53
|
+
sisremove: (_id: string, _data: any) => Promise<unknown>;
|
|
54
|
+
smembers: (_id: string) => Promise<unknown>;
|
|
55
|
+
sdiff: (_id: string) => Promise<unknown>;
|
|
56
|
+
clear: (key: string) => Promise<unknown>;
|
|
57
|
+
};
|
|
39
58
|
/**
|
|
40
59
|
* Factory to create Redis connector
|
|
41
60
|
*/
|
package/dist/database/redis.js
CHANGED
|
@@ -154,17 +154,172 @@ export class RedisConnector {
|
|
|
154
154
|
return this.defaultClient?.status === 'ready';
|
|
155
155
|
}
|
|
156
156
|
}
|
|
157
|
+
export let redisConnectorInstance = null;
|
|
158
|
+
export const setRedisConnectorInstance = (connector) => {
|
|
159
|
+
redisConnectorInstance = connector;
|
|
160
|
+
};
|
|
161
|
+
export const getRedisConnector = () => {
|
|
162
|
+
if (!redisConnectorInstance) {
|
|
163
|
+
throw new Error('Redis connector not initialized. Ensure setRedisConnectorInstance is called.');
|
|
164
|
+
}
|
|
165
|
+
return redisConnectorInstance;
|
|
166
|
+
};
|
|
167
|
+
// --- Repository Factory ---
|
|
168
|
+
export const createRedisRepository = (getDb, keyPrefix) => {
|
|
169
|
+
// Helper to handle callbacks as promises
|
|
170
|
+
const promiseFunct = (err, response, resolve, reject) => {
|
|
171
|
+
if (err) {
|
|
172
|
+
reject(err);
|
|
173
|
+
}
|
|
174
|
+
else {
|
|
175
|
+
resolve(response);
|
|
176
|
+
}
|
|
177
|
+
};
|
|
178
|
+
// Helper to ensure db is resolved from potential promise
|
|
179
|
+
const resolveDb = async () => {
|
|
180
|
+
const dbOrPromise = getDb();
|
|
181
|
+
if (dbOrPromise instanceof Promise) {
|
|
182
|
+
return await dbOrPromise;
|
|
183
|
+
}
|
|
184
|
+
return dbOrPromise;
|
|
185
|
+
};
|
|
186
|
+
return {
|
|
187
|
+
find: async (_id) => {
|
|
188
|
+
const db = await resolveDb();
|
|
189
|
+
return new Promise((resolve, reject) => {
|
|
190
|
+
db.get(_id, (err, response) => {
|
|
191
|
+
promiseFunct(err, response, resolve, reject);
|
|
192
|
+
});
|
|
193
|
+
});
|
|
194
|
+
},
|
|
195
|
+
findKeys: async (_id) => {
|
|
196
|
+
const db = await resolveDb();
|
|
197
|
+
return new Promise((resolve, reject) => {
|
|
198
|
+
db.keys(_id, (err, response) => {
|
|
199
|
+
if (response && response.length > 0) {
|
|
200
|
+
promiseFunct(err, response, resolve, reject);
|
|
201
|
+
}
|
|
202
|
+
else {
|
|
203
|
+
promiseFunct(null, ['No genero datos'], resolve, reject);
|
|
204
|
+
}
|
|
205
|
+
});
|
|
206
|
+
});
|
|
207
|
+
},
|
|
208
|
+
findAll: async () => {
|
|
209
|
+
const db = await resolveDb();
|
|
210
|
+
return new Promise((resolve, reject) => {
|
|
211
|
+
db.keys(keyPrefix + '*', (err, response) => {
|
|
212
|
+
if (response && response.length > 0) {
|
|
213
|
+
db.mget(response, (err, response2) => {
|
|
214
|
+
promiseFunct(err, response2, resolve, reject);
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
else {
|
|
218
|
+
promiseFunct(null, ['No genero datos'], resolve, reject);
|
|
219
|
+
}
|
|
220
|
+
});
|
|
221
|
+
});
|
|
222
|
+
},
|
|
223
|
+
save: async (_id, _data) => {
|
|
224
|
+
const db = await resolveDb();
|
|
225
|
+
return new Promise((resolve, reject) => {
|
|
226
|
+
db.set(_id, _data, (err, response) => {
|
|
227
|
+
promiseFunct(err, response, resolve, reject);
|
|
228
|
+
});
|
|
229
|
+
});
|
|
230
|
+
},
|
|
231
|
+
saveTTL: async (_id, _data, ttl) => {
|
|
232
|
+
const db = await resolveDb();
|
|
233
|
+
return new Promise((resolve, reject) => {
|
|
234
|
+
db.set(_id, _data, (err, response) => {
|
|
235
|
+
if (err) {
|
|
236
|
+
reject(err);
|
|
237
|
+
}
|
|
238
|
+
else {
|
|
239
|
+
db.expire(_id, ttl);
|
|
240
|
+
resolve(response);
|
|
241
|
+
}
|
|
242
|
+
});
|
|
243
|
+
});
|
|
244
|
+
},
|
|
245
|
+
addTTL: async (_id, ttl) => {
|
|
246
|
+
const db = await resolveDb();
|
|
247
|
+
return db.expire(_id, ttl);
|
|
248
|
+
},
|
|
249
|
+
getTTL: async (_id) => {
|
|
250
|
+
const db = await resolveDb();
|
|
251
|
+
return new Promise((resolve, reject) => {
|
|
252
|
+
db.ttl(_id, (err, response) => {
|
|
253
|
+
promiseFunct(err, response, resolve, reject);
|
|
254
|
+
});
|
|
255
|
+
});
|
|
256
|
+
},
|
|
257
|
+
incr: async (_id) => {
|
|
258
|
+
const db = await resolveDb();
|
|
259
|
+
return new Promise((resolve, reject) => {
|
|
260
|
+
db.incr(_id, (err, response) => {
|
|
261
|
+
promiseFunct(err, response, resolve, reject);
|
|
262
|
+
});
|
|
263
|
+
});
|
|
264
|
+
},
|
|
265
|
+
sadd: async (_id, _data) => {
|
|
266
|
+
const db = await resolveDb();
|
|
267
|
+
return new Promise((resolve, reject) => {
|
|
268
|
+
db.sadd(_id, _data, (err, response) => {
|
|
269
|
+
promiseFunct(err, response, resolve, reject);
|
|
270
|
+
});
|
|
271
|
+
});
|
|
272
|
+
},
|
|
273
|
+
sismember: async (_id, _data) => {
|
|
274
|
+
const db = await resolveDb();
|
|
275
|
+
return new Promise((resolve, reject) => {
|
|
276
|
+
db.sismember(_id, _data, (err, response) => {
|
|
277
|
+
promiseFunct(err, response, resolve, reject);
|
|
278
|
+
});
|
|
279
|
+
});
|
|
280
|
+
},
|
|
281
|
+
sisremove: async (_id, _data) => {
|
|
282
|
+
const db = await resolveDb();
|
|
283
|
+
return new Promise((resolve, reject) => {
|
|
284
|
+
db.srem(_id, _data, (err, response) => {
|
|
285
|
+
promiseFunct(err, response, resolve, reject);
|
|
286
|
+
});
|
|
287
|
+
});
|
|
288
|
+
},
|
|
289
|
+
smembers: async (_id) => {
|
|
290
|
+
const db = await resolveDb();
|
|
291
|
+
return new Promise((resolve, reject) => {
|
|
292
|
+
db.smembers(_id, (err, response) => {
|
|
293
|
+
promiseFunct(err, response, resolve, reject);
|
|
294
|
+
});
|
|
295
|
+
});
|
|
296
|
+
},
|
|
297
|
+
sdiff: async (_id) => {
|
|
298
|
+
return new Promise((resolve, reject) => {
|
|
299
|
+
console.log('sdiff called with', _id);
|
|
300
|
+
resolve([]);
|
|
301
|
+
});
|
|
302
|
+
},
|
|
303
|
+
clear: async (key) => {
|
|
304
|
+
const db = await resolveDb();
|
|
305
|
+
return new Promise((resolve, reject) => {
|
|
306
|
+
db.del(key, (err, response) => {
|
|
307
|
+
promiseFunct(err, response, resolve, reject);
|
|
308
|
+
});
|
|
309
|
+
});
|
|
310
|
+
}
|
|
311
|
+
};
|
|
312
|
+
};
|
|
157
313
|
/**
|
|
158
314
|
* Factory to create Redis connector
|
|
159
315
|
*/
|
|
160
316
|
export function createRedisConnector(urlOrOptions) {
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
host: urlOrOptions
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
return new RedisConnector(urlOrOptions);
|
|
317
|
+
const connector = typeof urlOrOptions === 'string'
|
|
318
|
+
? new RedisConnector({
|
|
319
|
+
host: urlOrOptions
|
|
320
|
+
}) // Cast to any to bypass strict check if needed, or rely on internal logic
|
|
321
|
+
: new RedisConnector(urlOrOptions);
|
|
322
|
+
setRedisConnectorInstance(connector);
|
|
323
|
+
return connector;
|
|
169
324
|
}
|
|
170
325
|
//# sourceMappingURL=redis.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redis.js","sourceRoot":"","sources":["../../src/database/redis.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"redis.js","sourceRoot":"","sources":["../../src/database/redis.ts"],"names":[],"mappings":"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"}
|