@reldens/storage 0.49.0 → 0.50.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.
- package/lib/entities-generator.js +125 -5
- package/package.json +5 -5
|
@@ -100,7 +100,7 @@ class EntitiesGenerator
|
|
|
100
100
|
Logger.critical('Failed to write entity file: '+filePath);
|
|
101
101
|
return false;
|
|
102
102
|
}
|
|
103
|
-
Logger.info('Generated entity file: '+
|
|
103
|
+
Logger.info('Generated entity file: '+fileName);
|
|
104
104
|
this.generatedEntities[tableName] = {
|
|
105
105
|
entityClassName,
|
|
106
106
|
entityFileName: fileName,
|
|
@@ -347,10 +347,10 @@ class EntitiesGenerator
|
|
|
347
347
|
}
|
|
348
348
|
let filePath = FileHandler.joinPaths(driverFolder, fileName);
|
|
349
349
|
if(!FileHandler.writeFile(filePath, modelContent)){
|
|
350
|
-
Logger.critical('Failed to write model file: '+
|
|
350
|
+
Logger.critical('Failed to write model file: '+fileName);
|
|
351
351
|
return false;
|
|
352
352
|
}
|
|
353
|
-
Logger.info('Generated model file: '+
|
|
353
|
+
Logger.info('Generated model file: '+fileName);
|
|
354
354
|
this.generatedEntities[tableName].modelClassName = modelClassName;
|
|
355
355
|
this.generatedEntities[tableName].modelFileName = fileName;
|
|
356
356
|
this.generatedEntities[tableName].driverKey = driverKey;
|
|
@@ -437,6 +437,14 @@ class EntitiesGenerator
|
|
|
437
437
|
}
|
|
438
438
|
|
|
439
439
|
generateEntitiesConfigFile()
|
|
440
|
+
{
|
|
441
|
+
if(this.isOverride){
|
|
442
|
+
return this.regenerateEntitiesConfigFile();
|
|
443
|
+
}
|
|
444
|
+
return this.appendToEntitiesConfigFile();
|
|
445
|
+
}
|
|
446
|
+
|
|
447
|
+
regenerateEntitiesConfigFile()
|
|
440
448
|
{
|
|
441
449
|
let configTemplateContent = FileHandler.fetchFileContents(this.templates['entities-config']);
|
|
442
450
|
if(!configTemplateContent) {
|
|
@@ -455,7 +463,66 @@ class EntitiesGenerator
|
|
|
455
463
|
Logger.critical('Failed to write entities config file: '+this.entitiesConfigPath);
|
|
456
464
|
return false;
|
|
457
465
|
}
|
|
458
|
-
Logger.info('
|
|
466
|
+
Logger.info('Regenerated entities config file: '+this.entitiesConfigPath);
|
|
467
|
+
return true;
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
appendToEntitiesConfigFile()
|
|
471
|
+
{
|
|
472
|
+
if(0 === Object.keys(this.generatedEntities).length){
|
|
473
|
+
return true;
|
|
474
|
+
}
|
|
475
|
+
if(!FileHandler.exists(this.entitiesConfigPath)){
|
|
476
|
+
Logger.error('Entities config file does not exist, cannot append new entities.');
|
|
477
|
+
return false;
|
|
478
|
+
}
|
|
479
|
+
let existingContent = FileHandler.readFile(this.entitiesConfigPath);
|
|
480
|
+
if(!existingContent){
|
|
481
|
+
Logger.error('Could not read existing entities config file.');
|
|
482
|
+
return false;
|
|
483
|
+
}
|
|
484
|
+
let newRequires = [];
|
|
485
|
+
let newConfigs = [];
|
|
486
|
+
for(let tableName of Object.keys(this.generatedEntities)){
|
|
487
|
+
let entity = this.generatedEntities[tableName];
|
|
488
|
+
let entityClassName = sc.get(entity, 'entityClassName', sc.capitalizedCamelCase(tableName)+'Entity');
|
|
489
|
+
let entityFileName = sc.get(entity, 'entityFileName', sc.kebabCase(tableName)+'-entity').replace('.js', '');
|
|
490
|
+
let requireStatement = 'const { '+ entityClassName+' } = require(\'./entities/'+entityFileName+'\');';
|
|
491
|
+
let configEntry = sc.camelCase(tableName)+': '+entityClassName+'.propertiesConfig()';
|
|
492
|
+
if(!existingContent.includes(requireStatement)){
|
|
493
|
+
newRequires.push(requireStatement);
|
|
494
|
+
}
|
|
495
|
+
if(!existingContent.includes(sc.camelCase(tableName)+':')){
|
|
496
|
+
newConfigs.push(configEntry);
|
|
497
|
+
}
|
|
498
|
+
}
|
|
499
|
+
if(0 === newRequires.length && 0 === newConfigs.length){
|
|
500
|
+
return true;
|
|
501
|
+
}
|
|
502
|
+
let firstRequirePosition = existingContent.indexOf('const {');
|
|
503
|
+
let entitiesConfigEnd = existingContent.indexOf('};\n\nmodule.exports');
|
|
504
|
+
if(-1 === firstRequirePosition || -1 === entitiesConfigEnd){
|
|
505
|
+
Logger.error('Could not find insertion points in config file.');
|
|
506
|
+
return false;
|
|
507
|
+
}
|
|
508
|
+
let beforeFirstRequire = existingContent.substring(0, firstRequirePosition);
|
|
509
|
+
let afterFirstRequire = existingContent.substring(firstRequirePosition, entitiesConfigEnd);
|
|
510
|
+
let updatedContent = beforeFirstRequire;
|
|
511
|
+
if(0 < newRequires.length){
|
|
512
|
+
updatedContent += newRequires.join('\n') + '\n';
|
|
513
|
+
}
|
|
514
|
+
updatedContent += afterFirstRequire;
|
|
515
|
+
if(0 < newConfigs.length){
|
|
516
|
+
if(!afterFirstRequire.trim().endsWith(',')){
|
|
517
|
+
updatedContent = updatedContent.trimEnd() + ',';
|
|
518
|
+
}
|
|
519
|
+
updatedContent += '\n ' + newConfigs.join(',\n ') + '\n';
|
|
520
|
+
}
|
|
521
|
+
updatedContent += existingContent.substring(entitiesConfigEnd);
|
|
522
|
+
if(!FileHandler.writeFile(this.entitiesConfigPath, updatedContent)){
|
|
523
|
+
Logger.error('Failed to append to entities config file: '+this.entitiesConfigPath);
|
|
524
|
+
return false;
|
|
525
|
+
}
|
|
459
526
|
return true;
|
|
460
527
|
}
|
|
461
528
|
|
|
@@ -487,6 +554,14 @@ class EntitiesGenerator
|
|
|
487
554
|
}
|
|
488
555
|
|
|
489
556
|
generateEntitiesTranslationsFile()
|
|
557
|
+
{
|
|
558
|
+
if(this.isOverride){
|
|
559
|
+
return this.regenerateEntitiesTranslationsFile();
|
|
560
|
+
}
|
|
561
|
+
return this.appendToEntitiesTranslationsFile();
|
|
562
|
+
}
|
|
563
|
+
|
|
564
|
+
regenerateEntitiesTranslationsFile()
|
|
490
565
|
{
|
|
491
566
|
let translationsTemplatePath = this.templates['entities-translations'];
|
|
492
567
|
if(!FileHandler.exists(translationsTemplatePath)){
|
|
@@ -506,7 +581,52 @@ class EntitiesGenerator
|
|
|
506
581
|
Logger.critical('Failed to write entities translations file: '+this.entitiesTranslationsPath);
|
|
507
582
|
return false;
|
|
508
583
|
}
|
|
509
|
-
Logger.info('
|
|
584
|
+
Logger.info('Regenerated entities translations file: '+this.entitiesTranslationsPath);
|
|
585
|
+
return true;
|
|
586
|
+
}
|
|
587
|
+
|
|
588
|
+
appendToEntitiesTranslationsFile()
|
|
589
|
+
{
|
|
590
|
+
if(0 === Object.keys(this.generatedEntities).length){
|
|
591
|
+
return true;
|
|
592
|
+
}
|
|
593
|
+
if(!FileHandler.exists(this.entitiesTranslationsPath)){
|
|
594
|
+
Logger.error('Entities translations file does not exist, cannot append new entities.');
|
|
595
|
+
return false;
|
|
596
|
+
}
|
|
597
|
+
let existingContent = FileHandler.readFile(this.entitiesTranslationsPath);
|
|
598
|
+
if(!existingContent){
|
|
599
|
+
Logger.error('Could not read existing translations file.');
|
|
600
|
+
return false;
|
|
601
|
+
}
|
|
602
|
+
let newTranslations = [];
|
|
603
|
+
for(let tableName of Object.keys(this.generatedEntities)){
|
|
604
|
+
if(!existingContent.includes('\''+tableName+'\':')){
|
|
605
|
+
newTranslations.push(
|
|
606
|
+
'\''+tableName+'\': \''
|
|
607
|
+
+tableName.split('_').map(word => word.charAt(0).toUpperCase()+word.slice(1)).join(' ')+'\''
|
|
608
|
+
);
|
|
609
|
+
}
|
|
610
|
+
}
|
|
611
|
+
if(0 === newTranslations.length){
|
|
612
|
+
return true;
|
|
613
|
+
}
|
|
614
|
+
let labelsEnd = existingContent.indexOf('\n }\n');
|
|
615
|
+
if(-1 === existingContent.indexOf('labels: {') || -1 === labelsEnd){
|
|
616
|
+
Logger.error('Could not find labels object boundaries in existing translations file.');
|
|
617
|
+
return false;
|
|
618
|
+
}
|
|
619
|
+
let beforeLabelsEnd = existingContent.substring(0, labelsEnd);
|
|
620
|
+
if(!beforeLabelsEnd.trim().endsWith(',')){
|
|
621
|
+
beforeLabelsEnd = beforeLabelsEnd.trimEnd() + ',';
|
|
622
|
+
}
|
|
623
|
+
if(!FileHandler.writeFile(
|
|
624
|
+
this.entitiesTranslationsPath,
|
|
625
|
+
beforeLabelsEnd + '\n ' + newTranslations.join(',\n ') + existingContent.substring(labelsEnd)
|
|
626
|
+
)){
|
|
627
|
+
Logger.error('Failed to append to entities translations file: '+this.entitiesTranslationsPath);
|
|
628
|
+
return false;
|
|
629
|
+
}
|
|
510
630
|
return true;
|
|
511
631
|
}
|
|
512
632
|
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@reldens/storage",
|
|
3
3
|
"scope": "@reldens",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.50.0",
|
|
5
5
|
"description": "Reldens - Storage",
|
|
6
6
|
"author": "Damian A. Pastorini",
|
|
7
7
|
"license": "MIT",
|
|
@@ -42,12 +42,12 @@
|
|
|
42
42
|
"url": "https://github.com/damian-pastorini/reldens-storage/issues"
|
|
43
43
|
},
|
|
44
44
|
"dependencies": {
|
|
45
|
-
"@mikro-orm/core": "^6.4.
|
|
46
|
-
"@mikro-orm/mongodb": "^6.4.
|
|
47
|
-
"@mikro-orm/mysql": "^6.4.
|
|
45
|
+
"@mikro-orm/core": "^6.4.16",
|
|
46
|
+
"@mikro-orm/mongodb": "^6.4.16",
|
|
47
|
+
"@mikro-orm/mysql": "^6.4.16",
|
|
48
48
|
"@prisma/client": "^6.8.2",
|
|
49
49
|
"@reldens/server-utils": "^0.18.0",
|
|
50
|
-
"@reldens/utils": "^0.
|
|
50
|
+
"@reldens/utils": "^0.50.0",
|
|
51
51
|
"knex": "^3.1.0",
|
|
52
52
|
"mysql": "^2.18.1",
|
|
53
53
|
"mysql2": "^3.14.1",
|