@reldens/cms 0.3.0 → 0.5.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,4 +1,4 @@
1
- #!/usr/bin/env node
1
+ #!/usr/bin/env node
2
2
 
3
3
  /**
4
4
  *
@@ -103,8 +103,7 @@ input[type="submit"]:hover {
103
103
  }
104
104
 
105
105
  .install-loading {
106
- width: 24px;
107
- height: 24px;
106
+ width: 32px;
108
107
  margin-right: 10px;
109
108
  vertical-align: middle;
110
109
  }
Binary file
Binary file
@@ -35,13 +35,11 @@
35
35
  </div>
36
36
  <h3 class="form-title">- Database Configuration -</h3>
37
37
  <div class="db-basic-config-notice">
38
- <span>
39
- Default configuration:
40
- <ul>
41
- <li>Client: mysql2 - Port: 3306</li>
42
- <li>Database Driver: prisma</li>
43
- </ul>
44
- </span>
38
+ <span>Default configuration:</span>
39
+ <ul>
40
+ <li>Client: mysql - Port: 3306</li>
41
+ <li>Database Driver: prisma</li>
42
+ </ul>
45
43
  </div>
46
44
  <div class="input-box db-storage-driver">
47
45
  <label for="db-storage-driver">Storage Driver</label>
package/lib/installer.js CHANGED
@@ -66,12 +66,11 @@ class Installer
66
66
  if('' === req._parsedUrl.pathname || '/' === req._parsedUrl.pathname){
67
67
  let installerIndexPath = FileHandler.joinPaths(this.installerPath, 'index.html');
68
68
  if(!FileHandler.exists(installerIndexPath)){
69
- return res.status(500).send('Installer template not found');
69
+ return res.status(500).send('Installer template not found.');
70
70
  }
71
- let content = FileHandler.readFile(installerIndexPath, {
72
- encoding: this.encoding
73
- });
74
- return res.send(mustache.render(content, req.session?.templateVariables || this.fetchDefaults()));
71
+ let content = FileHandler.readFile(installerIndexPath);
72
+ let contentParams = req.session?.templateVariables || this.fetchDefaults();
73
+ return res.send(mustache.render(content, contentParams));
75
74
  }
76
75
  next();
77
76
  }
@@ -111,27 +110,35 @@ class Installer
111
110
  return res.redirect('/?error=connection-failed');
112
111
  }
113
112
  if(!sc.isObjectFunction(dbDriver, 'rawQuery')){
114
- Logger.error('Method "rawQuery" not found');
113
+ Logger.error('Method "rawQuery" not found.');
115
114
  return res.redirect('/?error=raw-query-not-found');
116
115
  }
117
116
  let installSqlPath = FileHandler.joinPaths(this.migrationsPath, 'install.sql');
118
117
  if(!FileHandler.exists(installSqlPath)){
119
- Logger.error('SQL installation file not found');
118
+ Logger.error('SQL installation file not found.');
120
119
  return res.redirect('/?error=sql-file-not-found');
121
120
  }
122
- await this.executeQueryFile(dbDriver, installSqlPath);
121
+ let queryTablesResult = await this.executeQueryFile(dbDriver, installSqlPath);
122
+ if(!queryTablesResult){
123
+ Logger.error('Tables creation failed.');
124
+ return res.redirect('/?error=sql-tables-creation-failed');
125
+ }
123
126
  Logger.info('Installed tables.');
124
127
  let defaultUserSqlPath = FileHandler.joinPaths(this.migrationsPath, 'default-user.sql');
125
128
  try {
126
129
  if(FileHandler.exists(defaultUserSqlPath)){
127
- await this.executeQueryFile(dbDriver, defaultUserSqlPath);
130
+ let queryUserResult = await this.executeQueryFile(dbDriver, defaultUserSqlPath);
131
+ if(!queryUserResult){
132
+ Logger.error('Default user creation failed.');
133
+ return res.redirect('/?error=sql-default-user-error');
134
+ }
128
135
  Logger.info('Created default user.');
129
136
  }
130
- let connectionData = {
131
- client: dbConfig.client,
132
- connection: dbConfig.config
133
- };
134
- await this.generateEntities(connectionData);
137
+ let entitiesGenerationResult = await this.generateEntities(dbDriver);
138
+ if(!entitiesGenerationResult){
139
+ Logger.error('Entities generation error.');
140
+ return res.redirect('/?error=installation-entities-generation-failed');
141
+ }
135
142
  Logger.info('Generated entities.');
136
143
  } catch (error) {
137
144
  Logger.error('Installation error: '+error.message);
@@ -155,18 +162,16 @@ class Installer
155
162
 
156
163
  async executeQueryFile(dbDriver, filePath)
157
164
  {
158
- let sqlContent = FileHandler.readFile(filePath, {
159
- encoding: this.encoding
160
- });
165
+ let sqlContent = FileHandler.readFile(filePath);
161
166
  if(!sqlContent){
162
167
  throw new Error('Could not read SQL file: '+filePath);
163
168
  }
164
169
  return await dbDriver.rawQuery(sqlContent.toString());
165
170
  }
166
171
 
167
- async generateEntities(connectionData)
172
+ async generateEntities(server)
168
173
  {
169
- let generator = new EntitiesGenerator({connectionData: connectionData, projectPath: this.projectRoot});
174
+ let generator = new EntitiesGenerator({server, projectPath: this.projectRoot});
170
175
  let success = await generator.generate();
171
176
  if(!success){
172
177
  Logger.error('Entities generation failed.');
@@ -197,9 +202,7 @@ class Installer
197
202
  Logger.error('ENV template not found: '+envTemplatePath);
198
203
  return false;
199
204
  }
200
- let envTemplate = FileHandler.readFile(envTemplatePath, {
201
- encoding: this.encoding
202
- });
205
+ let envTemplate = FileHandler.readFile(envTemplatePath);
203
206
  let envContent = mustache.render(envTemplate, {
204
207
  dbClient: templateVariables['db-client'],
205
208
  dbHost: templateVariables['db-host'],
@@ -211,7 +214,7 @@ class Installer
211
214
  adminPath: templateVariables['app-admin-path'],
212
215
  adminSecret: Encryptor.generateSecretKey(),
213
216
  host: templateVariables['app-host'] || 'http://localhost',
214
- port: templateVariables['app-port'] || '3000'
217
+ port: templateVariables['app-port'] || '8000'
215
218
  });
216
219
  return FileHandler.writeFile(this.envFilePath, envContent);
217
220
  }
@@ -267,10 +270,10 @@ class Installer
267
270
  {
268
271
  return {
269
272
  'app-host': process.env.RELDENS_CMS_HOST || 'http://localhost',
270
- 'app-port': process.env.RELDENS_CMS_PORT || '3000',
273
+ 'app-port': process.env.RELDENS_CMS_PORT || '8000',
271
274
  'app-admin-path': process.env.RELDENS_CMS_ADMIN_PATH || '/reldens-admin',
272
275
  'db-storage-driver': 'prisma',
273
- 'db-client': process.env.RELDENS_CMS_DB_CLIENT || 'mysql2',
276
+ 'db-client': process.env.RELDENS_CMS_DB_CLIENT || 'mysql',
274
277
  'db-host': process.env.RELDENS_CMS_DB_HOST || 'localhost',
275
278
  'db-port': process.env.RELDENS_CMS_DB_PORT || '3306',
276
279
  'db-name': process.env.RELDENS_CMS_DB_NAME || 'reldens_cms',
package/lib/manager.js CHANGED
@@ -40,11 +40,11 @@ class Manager
40
40
  {
41
41
  return {
42
42
  host: process.env.RELDENS_CMS_HOST || 'http://localhost',
43
- port: Number(process.env.RELDENS_CMS_PORT || 3000),
43
+ port: Number(process.env.RELDENS_CMS_PORT || 8000),
44
44
  adminPath: process.env.RELDENS_CMS_ADMIN_PATH || '/reldens-admin',
45
45
  adminSecret: process.env.RELDENS_CMS_ADMIN_SECRET || '',
46
46
  database: {
47
- client: process.env.RELDENS_CMS_DB_CLIENT || 'mysql2',
47
+ client: process.env.RELDENS_CMS_DB_CLIENT || 'mysql',
48
48
  host: process.env.RELDENS_CMS_DB_HOST || 'localhost',
49
49
  port: Number(process.env.RELDENS_CMS_DB_PORT || 3306),
50
50
  name: process.env.RELDENS_CMS_DB_NAME || 'reldens_cms',
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@reldens/cms",
3
3
  "scope": "@reldens",
4
- "version": "0.3.0",
4
+ "version": "0.5.0",
5
5
  "description": "Reldens - CMS",
6
6
  "author": "Damian A. Pastorini",
7
7
  "license": "MIT",
@@ -33,7 +33,7 @@
33
33
  },
34
34
  "dependencies": {
35
35
  "@reldens/server-utils": "^0.16.0",
36
- "@reldens/storage": "^0.36.0",
36
+ "@reldens/storage": "^0.38.0",
37
37
  "@reldens/utils": "^0.47.0",
38
38
  "dotenv": "^16.5.0",
39
39
  "mustache": "^4.2.0"