@reldens/cms 0.13.0 → 0.14.0

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.
Files changed (2) hide show
  1. package/lib/installer.js +46 -2
  2. package/package.json +3 -3
package/lib/installer.js CHANGED
@@ -5,7 +5,7 @@
5
5
  */
6
6
 
7
7
  const { FileHandler, Encryptor } = require('@reldens/server-utils');
8
- const { DriversMap, EntitiesGenerator, PrismaSchemaGenerator } = require('@reldens/storage');
8
+ const { DriversMap, DriversClassMap, EntitiesGenerator, PrismaSchemaGenerator } = require('@reldens/storage');
9
9
  const { EntitiesLoader } = require('./entities-loader');
10
10
  const { Logger, sc } = require('@reldens/utils');
11
11
 
@@ -244,18 +244,62 @@ class Installer
244
244
 
245
245
  async generateEntities(server, isOverride = false)
246
246
  {
247
+ let driverType = sc.get(DriversClassMap, server.constructor.name, '');
248
+ Logger.debug('Driver type detected: '+driverType+', Server constructor: '+server.constructor.name);
249
+ if('prisma' === driverType){
250
+ let dbConfig = this.extractDbConfigFromServer(server);
251
+ Logger.debug('Extracted DB config:', dbConfig);
252
+ if(dbConfig){
253
+ let generatedPrismaSchema = await this.generatePrismaSchema(dbConfig);
254
+ if(!generatedPrismaSchema){
255
+ Logger.error('Could not generate Prisma schema for entities generation.');
256
+ return false;
257
+ }
258
+ Logger.info('Generated Prisma schema for entities generation.');
259
+ }
260
+ }
247
261
  let generator = new EntitiesGenerator({server, projectPath: this.projectRoot, isOverride});
248
262
  let success = await generator.generate();
249
263
  if(!success){
250
264
  Logger.error('Entities generation failed.');
251
265
  return false;
252
266
  }
253
- Logger.info('Entities generation success.');
254
267
  return true;
255
268
  }
256
269
 
270
+ extractDbConfigFromServer(server)
271
+ {
272
+ let config = sc.get(server, 'config');
273
+ if(!config){
274
+ Logger.warning('Could not extract database config from server.');
275
+ return false;
276
+ }
277
+ let dbConfig = {
278
+ client: sc.get(server, 'client', 'mysql'),
279
+ config: {
280
+ host: sc.get(config, 'host', 'localhost'),
281
+ port: sc.get(config, 'port', 3306),
282
+ database: sc.get(config, 'database', ''),
283
+ user: sc.get(config, 'user', ''),
284
+ password: sc.get(config, 'password', ''),
285
+ multipleStatements: true
286
+ },
287
+ debug: false
288
+ };
289
+ Logger.debug('Extracted DB config structure:', {
290
+ client: dbConfig.client,
291
+ host: dbConfig.config.host,
292
+ database: dbConfig.config.database
293
+ });
294
+ return dbConfig;
295
+ }
296
+
257
297
  async generatePrismaSchema(connectionData)
258
298
  {
299
+ if(!connectionData){
300
+ Logger.error('Missing "connectionData" to generate Prisma Schema.');
301
+ return false;
302
+ }
259
303
  let generator = new PrismaSchemaGenerator({
260
304
  ...connectionData,
261
305
  dataProxy: true,
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@reldens/cms",
3
3
  "scope": "@reldens",
4
- "version": "0.13.0",
4
+ "version": "0.14.0",
5
5
  "description": "Reldens - CMS",
6
6
  "author": "Damian A. Pastorini",
7
7
  "license": "MIT",
@@ -34,8 +34,8 @@
34
34
  },
35
35
  "dependencies": {
36
36
  "@reldens/server-utils": "^0.18.0",
37
- "@reldens/storage": "^0.49.0",
38
- "@reldens/utils": "^0.49.0",
37
+ "@reldens/storage": "^0.50.0",
38
+ "@reldens/utils": "^0.50.0",
39
39
  "dotenv": "^16.5.0",
40
40
  "mustache": "^4.2.0"
41
41
  }