@reldens/cms 0.85.0 → 0.86.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.
@@ -1,104 +1,104 @@
1
- /**
2
- *
3
- * Reldens - CMS - MySQLInstaller
4
- *
5
- */
6
-
7
- const { execSync } = require('child_process');
8
- const { FileHandler } = require('@reldens/server-utils');
9
- const { Logger, sc } = require('@reldens/utils');
10
- const { PrismaSchemaGenerator, PrismaClientLoader } = require('@reldens/storage');
11
-
12
- class MySQLInstaller
13
- {
14
-
15
- static migrationFiles()
16
- {
17
- return {
18
- 'install-cms-tables': 'install.sql',
19
- 'install-user-auth': 'users-authentication.sql',
20
- 'install-default-user': 'default-user.sql',
21
- 'install-default-homepage': 'default-homepage.sql',
22
- 'install-default-blocks': 'default-blocks.sql',
23
- 'install-entity-access': 'default-entity-access.sql',
24
- 'install-dynamic-forms': 'default-forms.sql',
25
- 'install-seo-files': 'default-sitemaps-and-robots.sql'
26
- };
27
- }
28
-
29
- static async executeQueryFile(isMarked, fileName, dbDriver, migrationsPath)
30
- {
31
- if('on' !== isMarked){
32
- return '';
33
- }
34
- let sqlFileContent = FileHandler.readFile(FileHandler.joinPaths(migrationsPath, fileName));
35
- if(!sqlFileContent){
36
- Logger.error('SQL file "'+fileName+'" not found.');
37
- return '/?error=sql-file-not-found&file-name='+fileName;
38
- }
39
- let queryExecutionResult = await dbDriver.rawQuery(sqlFileContent);
40
- if(!queryExecutionResult){
41
- Logger.error('SQL file "'+fileName+'" raw execution failed.');
42
- return '/?error=sql-file-execution-error&file-name='+fileName;
43
- }
44
- Logger.info('SQL file "'+fileName+'" raw execution successfully.');
45
- return '';
46
- }
47
-
48
- static normalizePrismaProvider(client)
49
- {
50
- if(-1 !== client.indexOf('mysql')){
51
- return 'mysql';
52
- }
53
- if('postgresql' === client || 'postgres' === client){
54
- return 'postgresql';
55
- }
56
- if('mongodb' === client){
57
- return 'mongodb';
58
- }
59
- return client;
60
- }
61
-
62
- static buildMinimalSchemaContent(provider)
63
- {
64
- return 'generator client {\n provider = "prisma-client-js"\n output = "./client"\n}\n\n'
65
- +'datasource db {\n provider = "'+provider+'"\n}';
66
- }
67
-
68
- static async generateMinimalPrismaClient(dbConfig, projectRoot)
69
- {
70
- PrismaSchemaGenerator.ensureStubFiles(projectRoot);
71
- let generator = new PrismaSchemaGenerator({
72
- ...dbConfig,
73
- config: sc.get(dbConfig, 'config', dbConfig),
74
- clientOutputPath: FileHandler.joinPaths(projectRoot, 'prisma', 'client'),
75
- prismaSchemaPath: FileHandler.joinPaths(projectRoot, 'prisma')
76
- });
77
- FileHandler.createFolder(FileHandler.joinPaths(projectRoot, 'prisma'));
78
- FileHandler.writeFile(
79
- FileHandler.joinPaths(projectRoot, 'prisma', 'schema.prisma'),
80
- MySQLInstaller.buildMinimalSchemaContent(
81
- MySQLInstaller.normalizePrismaProvider(sc.get(dbConfig, 'client', 'mysql'))
82
- )
83
- );
84
- generator.setDatabaseEnvironmentVariables();
85
- generator.generateConfigFile();
86
- Logger.info('Running prisma generate...');
87
- try {
88
- execSync('npx prisma generate', { stdio: 'inherit', cwd: projectRoot });
89
- } catch(error) {
90
- Logger.error('Prisma generate failed: '+error.message);
91
- return false;
92
- }
93
- let { PrismaClient } = require(FileHandler.joinPaths(projectRoot, 'prisma', 'client'));
94
- return PrismaClientLoader.createWithAdapter(PrismaClient, process.env.DATABASE_URL) || false;
95
- }
96
-
97
- static createPrismaClient(projectRoot)
98
- {
99
- return PrismaClientLoader.load(projectRoot, null, null);
100
- }
101
-
102
- }
103
-
104
- module.exports.MySQLInstaller = MySQLInstaller;
1
+ /**
2
+ *
3
+ * Reldens - CMS - MySQLInstaller
4
+ *
5
+ */
6
+
7
+ const { execSync } = require('child_process');
8
+ const { ManagerServicesInitializer } = require('./manager-services-initializer');
9
+ const { FileHandler } = require('@reldens/server-utils');
10
+ const { Logger, sc } = require('@reldens/utils');
11
+ const { PrismaSchemaGenerator } = require('@reldens/storage');
12
+
13
+ class MySQLInstaller
14
+ {
15
+
16
+ static migrationFiles()
17
+ {
18
+ return {
19
+ 'install-cms-tables': 'install.sql',
20
+ 'install-user-auth': 'users-authentication.sql',
21
+ 'install-default-user': 'default-user.sql',
22
+ 'install-default-homepage': 'default-homepage.sql',
23
+ 'install-default-blocks': 'default-blocks.sql',
24
+ 'install-entity-access': 'default-entity-access.sql',
25
+ 'install-dynamic-forms': 'default-forms.sql',
26
+ 'install-seo-files': 'default-sitemaps-and-robots.sql'
27
+ };
28
+ }
29
+
30
+ static async executeQueryFile(isMarked, fileName, dbDriver, migrationsPath)
31
+ {
32
+ if('on' !== isMarked){
33
+ return '';
34
+ }
35
+ let sqlFileContent = FileHandler.readFile(FileHandler.joinPaths(migrationsPath, fileName));
36
+ if(!sqlFileContent){
37
+ Logger.error('SQL file "'+fileName+'" not found.');
38
+ return '/?error=sql-file-not-found&file-name='+fileName;
39
+ }
40
+ let queryExecutionResult = await dbDriver.rawQuery(sqlFileContent);
41
+ if(!queryExecutionResult){
42
+ Logger.error('SQL file "'+fileName+'" raw execution failed.');
43
+ return '/?error=sql-file-execution-error&file-name='+fileName;
44
+ }
45
+ Logger.info('SQL file "'+fileName+'" raw execution successfully.');
46
+ return '';
47
+ }
48
+
49
+ static normalizePrismaProvider(client)
50
+ {
51
+ if(-1 !== client.indexOf('mysql')){
52
+ return 'mysql';
53
+ }
54
+ if('postgresql' === client || 'postgres' === client){
55
+ return 'postgresql';
56
+ }
57
+ if('mongodb' === client){
58
+ return 'mongodb';
59
+ }
60
+ return client;
61
+ }
62
+
63
+ static buildMinimalSchemaContent(provider)
64
+ {
65
+ return 'generator client {\n provider = "prisma-client-js"\n output = "./client"\n}\n\n'
66
+ +'datasource db {\n provider = "'+provider+'"\n}';
67
+ }
68
+
69
+ static async generateMinimalPrismaClient(dbConfig, projectRoot, prismaAdapter, prismaAdapterClass)
70
+ {
71
+ PrismaSchemaGenerator.ensureStubFiles(projectRoot);
72
+ let generator = new PrismaSchemaGenerator({
73
+ ...dbConfig,
74
+ config: sc.get(dbConfig, 'config', dbConfig),
75
+ clientOutputPath: FileHandler.joinPaths(projectRoot, 'prisma', 'client'),
76
+ prismaSchemaPath: FileHandler.joinPaths(projectRoot, 'prisma')
77
+ });
78
+ FileHandler.createFolder(FileHandler.joinPaths(projectRoot, 'prisma'));
79
+ FileHandler.writeFile(
80
+ FileHandler.joinPaths(projectRoot, 'prisma', 'schema.prisma'),
81
+ MySQLInstaller.buildMinimalSchemaContent(
82
+ MySQLInstaller.normalizePrismaProvider(sc.get(dbConfig, 'client', 'mysql'))
83
+ )
84
+ );
85
+ generator.setDatabaseEnvironmentVariables();
86
+ generator.generateConfigFile();
87
+ Logger.info('Running prisma generate...');
88
+ try {
89
+ execSync('npx prisma generate', { stdio: 'inherit', cwd: projectRoot });
90
+ } catch(error) {
91
+ Logger.error('Prisma generate failed: '+error.message);
92
+ return false;
93
+ }
94
+ return MySQLInstaller.createPrismaClient(projectRoot, prismaAdapter, prismaAdapterClass);
95
+ }
96
+
97
+ static createPrismaClient(projectRoot, prismaAdapter, prismaAdapterClass)
98
+ {
99
+ return ManagerServicesInitializer.loadPrismaModules(projectRoot, null, null, prismaAdapter, prismaAdapterClass);
100
+ }
101
+
102
+ }
103
+
104
+ module.exports.MySQLInstaller = MySQLInstaller;
@@ -46,12 +46,17 @@ class PrismaSubprocessWorker
46
46
  let projectRoot = sc.get(message, 'projectRoot', './');
47
47
  PrismaSchemaGenerator.ensureStubFiles(projectRoot);
48
48
  let { MySQLInstaller } = require('./mysql-installer');
49
- let generatedClient = await MySQLInstaller.generateMinimalPrismaClient(dbConfig, projectRoot);
50
- if(!generatedClient){
49
+ let generatedModules = await MySQLInstaller.generateMinimalPrismaClient(
50
+ dbConfig,
51
+ projectRoot,
52
+ sc.get(message, 'prismaAdapter', '@prisma/adapter-mariadb'),
53
+ sc.get(message, 'prismaAdapterClass', 'PrismaMariaDb')
54
+ );
55
+ if(!generatedModules){
51
56
  this.sendErrorResponse('Failed to generate Prisma client.');
52
57
  return;
53
58
  }
54
- dbConfig.prismaClient = generatedClient;
59
+ dbConfig.prismaModules = generatedModules;
55
60
  let { DriversMap } = require('@reldens/storage');
56
61
  let driverClass = DriversMap['prisma'];
57
62
  if(!driverClass){
@@ -77,7 +82,7 @@ class PrismaSubprocessWorker
77
82
  return;
78
83
  }
79
84
  }
80
- await generatedClient.$disconnect();
85
+ await generatedModules.client.$disconnect();
81
86
  this.sendSuccessResponse('Subprocess installation completed.');
82
87
  }
83
88
 
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@reldens/cms",
3
3
  "scope": "@reldens",
4
- "version": "0.85.0",
4
+ "version": "0.86.0",
5
5
  "description": "Reldens - CMS",
6
6
  "author": "Damian A. Pastorini",
7
7
  "license": "MIT",
@@ -34,9 +34,9 @@
34
34
  "url": "https://github.com/damian-pastorini/reldens-cms/issues"
35
35
  },
36
36
  "dependencies": {
37
- "@reldens/server-utils": "^0.56.0",
38
- "@reldens/storage": "^0.112.0",
39
- "@reldens/utils": "^0.57.0",
37
+ "@reldens/server-utils": "^0.57.0",
38
+ "@reldens/storage": "^0.116.0",
39
+ "@reldens/utils": "^0.58.0",
40
40
  "dotenv": "17.4.2",
41
41
  "mustache": "4.2.0"
42
42
  }
@@ -7,6 +7,8 @@ RELDENS_DB_NAME={{&dbName}}
7
7
  RELDENS_DB_USER={{&dbUser}}
8
8
  RELDENS_DB_PASSWORD={{&dbPassword}}
9
9
  RELDENS_DB_URL={{&dbClient}}://{{&dbUser}}:{{&dbPassword}}@{{&dbHost}}:{{&dbPort}}/{{&dbName}}
10
+ RELDENS_PRISMA_ADAPTER={{&prismaAdapter}}
11
+ RELDENS_PRISMA_ADAPTER_CLASS={{&prismaAdapterClass}}
10
12
 
11
13
  # Admin Panel Configuration
12
14
  RELDENS_ADMIN_ROUTE_PATH={{&adminPath}}
@@ -1,30 +1,30 @@
1
- /**
2
- *
3
- * Reldens - CMS
4
- *
5
- */
6
-
7
- const { Manager } = require('@reldens/cms');
8
- const { Logger } = require('@reldens/utils');
9
- const { rawRegisteredEntities, entitiesConfig, entitiesTranslations } = require('./generated-entities/models/{{driverKey}}/registered-models-{{driverKey}}');
10
- {{&prismaClientImports}}
11
-
12
- let manager = new Manager({
13
- projectRoot: __dirname,
14
- rawRegisteredEntities,
15
- entitiesConfig,
16
- entitiesTranslations{{&prismaClientParam}}
17
- });
18
- Logger.debug('Reldens CMS Manager instance created.', {configuration: manager.config});
19
-
20
- manager.start().then((result) => {
21
- if(!result){
22
- Logger.info('Reldens CMS started by command failed.');
23
- return false;
24
- }
25
- Logger.info('Reldens CMS started by command.');
26
- return true;
27
- }).catch((error) => {
28
- Logger.critical('Failed to start CMS: ' + error.message);
29
- process.exit();
30
- });
1
+ /**
2
+ *
3
+ * Reldens - CMS
4
+ *
5
+ */
6
+
7
+ const { Manager } = require('@reldens/cms');
8
+ const { Logger } = require('@reldens/utils');
9
+ const { rawRegisteredEntities, entitiesConfig, entitiesTranslations } = require('./generated-entities/models/{{driverKey}}/registered-models-{{driverKey}}');
10
+ {{&prismaClientImports}}
11
+
12
+ let manager = new Manager({
13
+ projectRoot: __dirname,
14
+ rawRegisteredEntities,
15
+ entitiesConfig,
16
+ entitiesTranslations{{&prismaClientParam}}
17
+ });
18
+ Logger.debug('Reldens CMS Manager instance created.', {configuration: manager.config});
19
+
20
+ manager.start().then((result) => {
21
+ if(!result){
22
+ Logger.info('Reldens CMS started by command failed.');
23
+ return false;
24
+ }
25
+ Logger.info('Reldens CMS started by command.');
26
+ return true;
27
+ }).catch((error) => {
28
+ Logger.critical('Failed to start CMS: ' + error.message);
29
+ process.exit();
30
+ });