@reldens/storage 0.89.0 → 0.91.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 (28) hide show
  1. package/CLAUDE.md +11 -2
  2. package/index.js +4 -1
  3. package/lib/entity-templates/entities-translations.template +3 -0
  4. package/lib/generators/entities-generation.js +52 -7
  5. package/lib/generators/entities-translations-generation.js +40 -4
  6. package/lib/generators/models-generation.js +10 -9
  7. package/lib/objection-js/objection-js-data-server.js +27 -2
  8. package/lib/relation-key.js +9 -0
  9. package/package.json +2 -2
  10. package/tests/fixtures/{expected-entities-prisma → expected-entities}/entities/test-categories-entity.js +70 -70
  11. package/tests/fixtures/{expected-entities-prisma → expected-entities}/entities/test-products-entity.js +96 -95
  12. package/tests/fixtures/{expected-entities-mikro-orm → expected-entities}/entities/test-reviews-entity.js +85 -84
  13. package/tests/fixtures/{expected-entities-mikro-orm → expected-entities}/entities-config.js +4 -4
  14. package/tests/fixtures/expected-entities/entities-translations.js +53 -0
  15. package/tests/run-tests.js +2 -2
  16. package/tests/utils/test-helpers.js +2 -2
  17. package/tests/utils/test-runner.js +1 -1
  18. package/tests/fixtures/expected-entities-mikro-orm/entities/test-categories-entity.js +0 -70
  19. package/tests/fixtures/expected-entities-mikro-orm/entities/test-products-entity.js +0 -95
  20. package/tests/fixtures/expected-entities-mikro-orm/entities-translations.js +0 -13
  21. package/tests/fixtures/expected-entities-objection-js/entities/test-categories-entity.js +0 -70
  22. package/tests/fixtures/expected-entities-objection-js/entities/test-products-entity.js +0 -95
  23. package/tests/fixtures/expected-entities-objection-js/entities/test-reviews-entity.js +0 -84
  24. package/tests/fixtures/expected-entities-objection-js/entities-config.js +0 -17
  25. package/tests/fixtures/expected-entities-objection-js/entities-translations.js +0 -13
  26. package/tests/fixtures/expected-entities-prisma/entities/test-reviews-entity.js +0 -84
  27. package/tests/fixtures/expected-entities-prisma/entities-config.js +0 -17
  28. package/tests/fixtures/expected-entities-prisma/entities-translations.js +0 -13
@@ -1,95 +1,96 @@
1
- /**
2
- *
3
- * Reldens - TestProductsEntity
4
- *
5
- */
6
-
7
- const { EntityProperties } = require('../../index');
8
- const { sc } = require('@reldens/utils');
9
-
10
- class TestProductsEntity extends EntityProperties
11
- {
12
-
13
- static propertiesConfig(extraProps)
14
- {
15
- let titleProperty = 'name';
16
- let properties = {
17
- id: {
18
- isId: true,
19
- type: 'number',
20
- isRequired: true,
21
- dbType: 'int'
22
- },
23
- category_id: {
24
- type: 'reference',
25
- reference: 'test_categories',
26
- isRequired: true,
27
- dbType: 'int'
28
- },
29
- [titleProperty]: {
30
- isRequired: true,
31
- dbType: 'varchar'
32
- },
33
- sku: {
34
- isRequired: true,
35
- dbType: 'varchar'
36
- },
37
- description: {
38
- type: 'textarea',
39
- dbType: 'text'
40
- },
41
- price: {
42
- type: 'number',
43
- isRequired: true,
44
- dbType: 'decimal'
45
- },
46
- stock_quantity: {
47
- type: 'number',
48
- dbType: 'int'
49
- },
50
- is_featured: {
51
- type: 'boolean',
52
- dbType: 'tinyint'
53
- },
54
- metadata: {
55
- type: 'textarea',
56
- dbType: 'json'
57
- },
58
- tags: {
59
- dbType: 'varchar'
60
- },
61
- status: {
62
- availableValues: [
63
- {value: 1, label: 'draft'},
64
- {value: 2, label: 'published'},
65
- {value: 3, label: 'archived'}
66
- ],
67
- dbType: 'enum'
68
- },
69
- created_at: {
70
- type: 'datetime',
71
- dbType: 'timestamp'
72
- },
73
- updated_at: {
74
- type: 'datetime',
75
- dbType: 'timestamp'
76
- }
77
- };
78
- let propertiesKeys = Object.keys(properties);
79
- let showProperties = propertiesKeys;
80
- let editProperties = sc.removeFromArray([...propertiesKeys], ['id', 'created_at', 'updated_at']);
81
- let listProperties = sc.removeFromArray([...propertiesKeys], ['description', 'metadata']);
82
- return {
83
- showProperties,
84
- editProperties,
85
- listProperties,
86
- filterProperties: listProperties,
87
- properties,
88
- titleProperty,
89
- ...extraProps
90
- };
91
- }
92
-
93
- }
94
-
95
- module.exports.TestProductsEntity = TestProductsEntity;
1
+ /**
2
+ *
3
+ * Reldens - TestProductsEntity
4
+ *
5
+ */
6
+
7
+ const { EntityProperties } = require('../../index');
8
+ const { sc } = require('@reldens/utils');
9
+
10
+ class TestProductsEntity extends EntityProperties
11
+ {
12
+
13
+ static propertiesConfig(extraProps)
14
+ {
15
+ let titleProperty = 'name';
16
+ let properties = {
17
+ id: {
18
+ isId: true,
19
+ type: 'number',
20
+ isRequired: true,
21
+ dbType: 'int'
22
+ },
23
+ category_id: {
24
+ type: 'reference',
25
+ reference: 'test_categories',
26
+ alias: 'related_test_categories',
27
+ isRequired: true,
28
+ dbType: 'int'
29
+ },
30
+ [titleProperty]: {
31
+ isRequired: true,
32
+ dbType: 'varchar'
33
+ },
34
+ sku: {
35
+ isRequired: true,
36
+ dbType: 'varchar'
37
+ },
38
+ description: {
39
+ type: 'textarea',
40
+ dbType: 'text'
41
+ },
42
+ price: {
43
+ type: 'number',
44
+ isRequired: true,
45
+ dbType: 'decimal'
46
+ },
47
+ stock_quantity: {
48
+ type: 'number',
49
+ dbType: 'int'
50
+ },
51
+ is_featured: {
52
+ type: 'boolean',
53
+ dbType: 'tinyint'
54
+ },
55
+ metadata: {
56
+ type: 'textarea',
57
+ dbType: 'json'
58
+ },
59
+ tags: {
60
+ dbType: 'varchar'
61
+ },
62
+ status: {
63
+ availableValues: [
64
+ {value: 1, label: 'draft'},
65
+ {value: 2, label: 'published'},
66
+ {value: 3, label: 'archived'}
67
+ ],
68
+ dbType: 'enum'
69
+ },
70
+ created_at: {
71
+ type: 'datetime',
72
+ dbType: 'timestamp'
73
+ },
74
+ updated_at: {
75
+ type: 'datetime',
76
+ dbType: 'timestamp'
77
+ }
78
+ };
79
+ let propertiesKeys = Object.keys(properties);
80
+ let showProperties = propertiesKeys;
81
+ let editProperties = sc.removeFromArray([...propertiesKeys], ['id', 'created_at', 'updated_at']);
82
+ let listProperties = sc.removeFromArray([...propertiesKeys], ['description', 'metadata']);
83
+ return {
84
+ showProperties,
85
+ editProperties,
86
+ listProperties,
87
+ filterProperties: listProperties,
88
+ properties,
89
+ titleProperty,
90
+ ...extraProps
91
+ };
92
+ }
93
+
94
+ }
95
+
96
+ module.exports.TestProductsEntity = TestProductsEntity;
@@ -1,84 +1,85 @@
1
- /**
2
- *
3
- * Reldens - TestReviewsEntity
4
- *
5
- */
6
-
7
- const { EntityProperties } = require('../../index');
8
- const { sc } = require('@reldens/utils');
9
-
10
- class TestReviewsEntity extends EntityProperties
11
- {
12
-
13
- static propertiesConfig(extraProps)
14
- {
15
- let titleProperty = 'title';
16
- let properties = {
17
- id: {
18
- isId: true,
19
- type: 'number',
20
- isRequired: true,
21
- dbType: 'int'
22
- },
23
- product_id: {
24
- type: 'reference',
25
- reference: 'test_products',
26
- isRequired: true,
27
- dbType: 'int'
28
- },
29
- reviewer_name: {
30
- isRequired: true,
31
- dbType: 'varchar'
32
- },
33
- reviewer_email: {
34
- isRequired: true,
35
- dbType: 'varchar'
36
- },
37
- rating: {
38
- type: 'boolean',
39
- isRequired: true,
40
- dbType: 'tinyint'
41
- },
42
- [titleProperty]: {
43
- dbType: 'varchar'
44
- },
45
- comment: {
46
- type: 'textarea',
47
- dbType: 'text'
48
- },
49
- is_verified: {
50
- type: 'boolean',
51
- dbType: 'tinyint'
52
- },
53
- helpful_count: {
54
- type: 'number',
55
- dbType: 'int'
56
- },
57
- created_at: {
58
- type: 'datetime',
59
- dbType: 'timestamp'
60
- },
61
- updated_at: {
62
- type: 'datetime',
63
- dbType: 'timestamp'
64
- }
65
- };
66
- let propertiesKeys = Object.keys(properties);
67
- let showProperties = propertiesKeys;
68
- let editProperties = sc.removeFromArray([...propertiesKeys], ['id', 'created_at', 'updated_at']);
69
- let listProperties = [...propertiesKeys];
70
- listProperties.splice(listProperties.indexOf('comment'), 1);
71
- return {
72
- showProperties,
73
- editProperties,
74
- listProperties,
75
- filterProperties: listProperties,
76
- properties,
77
- titleProperty,
78
- ...extraProps
79
- };
80
- }
81
-
82
- }
83
-
84
- module.exports.TestReviewsEntity = TestReviewsEntity;
1
+ /**
2
+ *
3
+ * Reldens - TestReviewsEntity
4
+ *
5
+ */
6
+
7
+ const { EntityProperties } = require('../../index');
8
+ const { sc } = require('@reldens/utils');
9
+
10
+ class TestReviewsEntity extends EntityProperties
11
+ {
12
+
13
+ static propertiesConfig(extraProps)
14
+ {
15
+ let titleProperty = 'title';
16
+ let properties = {
17
+ id: {
18
+ isId: true,
19
+ type: 'number',
20
+ isRequired: true,
21
+ dbType: 'int'
22
+ },
23
+ product_id: {
24
+ type: 'reference',
25
+ reference: 'test_products',
26
+ alias: 'related_test_products',
27
+ isRequired: true,
28
+ dbType: 'int'
29
+ },
30
+ reviewer_name: {
31
+ isRequired: true,
32
+ dbType: 'varchar'
33
+ },
34
+ reviewer_email: {
35
+ isRequired: true,
36
+ dbType: 'varchar'
37
+ },
38
+ rating: {
39
+ type: 'boolean',
40
+ isRequired: true,
41
+ dbType: 'tinyint'
42
+ },
43
+ [titleProperty]: {
44
+ dbType: 'varchar'
45
+ },
46
+ comment: {
47
+ type: 'textarea',
48
+ dbType: 'text'
49
+ },
50
+ is_verified: {
51
+ type: 'boolean',
52
+ dbType: 'tinyint'
53
+ },
54
+ helpful_count: {
55
+ type: 'number',
56
+ dbType: 'int'
57
+ },
58
+ created_at: {
59
+ type: 'datetime',
60
+ dbType: 'timestamp'
61
+ },
62
+ updated_at: {
63
+ type: 'datetime',
64
+ dbType: 'timestamp'
65
+ }
66
+ };
67
+ let propertiesKeys = Object.keys(properties);
68
+ let showProperties = propertiesKeys;
69
+ let editProperties = sc.removeFromArray([...propertiesKeys], ['id', 'created_at', 'updated_at']);
70
+ let listProperties = [...propertiesKeys];
71
+ listProperties.splice(listProperties.indexOf('comment'), 1);
72
+ return {
73
+ showProperties,
74
+ editProperties,
75
+ listProperties,
76
+ filterProperties: listProperties,
77
+ properties,
78
+ titleProperty,
79
+ ...extraProps
80
+ };
81
+ }
82
+
83
+ }
84
+
85
+ module.exports.TestReviewsEntity = TestReviewsEntity;
@@ -4,13 +4,13 @@
4
4
  *
5
5
  */
6
6
 
7
- const { TestCategoriesEntity } = require('./entities/test-categories-entity');
8
- const { TestProductsEntity } = require('./entities/test-products-entity');
7
+ const { TestCategoriesEntity } = require('./entities/test-categories-entity');
8
+ const { TestProductsEntity } = require('./entities/test-products-entity');
9
9
  const { TestReviewsEntity } = require('./entities/test-reviews-entity');
10
10
 
11
11
  let entitiesConfig = {
12
- testCategories: TestCategoriesEntity.propertiesConfig(),
13
- testProducts: TestProductsEntity.propertiesConfig(),
12
+ testCategories: TestCategoriesEntity.propertiesConfig(),
13
+ testProducts: TestProductsEntity.propertiesConfig(),
14
14
  testReviews: TestReviewsEntity.propertiesConfig()
15
15
  };
16
16
 
@@ -0,0 +1,53 @@
1
+ /**
2
+ *
3
+ * Reldens - Entities Translations
4
+ *
5
+ */
6
+
7
+ module.exports.entitiesTranslations = {
8
+ labels: {
9
+ 'test_categories': 'Test Categories',
10
+ 'test_products': 'Test Products',
11
+ 'test_reviews': 'Test Reviews'
12
+ },
13
+ fields: {
14
+ 'test_categories': {
15
+ 'id': 'ID',
16
+ 'name': 'Name',
17
+ 'slug': 'Slug',
18
+ 'description': 'Description',
19
+ 'is_active': 'Is Active',
20
+ 'display_order': 'Display Order',
21
+ 'created_at': 'Created At',
22
+ 'updated_at': 'Updated At'
23
+ },
24
+ 'test_products': {
25
+ 'id': 'ID',
26
+ 'category_id': 'Category ID',
27
+ 'name': 'Name',
28
+ 'sku': 'Sku',
29
+ 'description': 'Description',
30
+ 'price': 'Price',
31
+ 'stock_quantity': 'Stock Quantity',
32
+ 'is_featured': 'Is Featured',
33
+ 'metadata': 'Metadata',
34
+ 'tags': 'Tags',
35
+ 'status': 'Status',
36
+ 'created_at': 'Created At',
37
+ 'updated_at': 'Updated At'
38
+ },
39
+ 'test_reviews': {
40
+ 'id': 'ID',
41
+ 'product_id': 'Product ID',
42
+ 'reviewer_name': 'Reviewer Name',
43
+ 'reviewer_email': 'Reviewer Email',
44
+ 'rating': 'Rating',
45
+ 'title': 'Title',
46
+ 'comment': 'Comment',
47
+ 'is_verified': 'Is Verified',
48
+ 'helpful_count': 'Helpful Count',
49
+ 'created_at': 'Created At',
50
+ 'updated_at': 'Updated At'
51
+ }
52
+ }
53
+ };
@@ -45,11 +45,11 @@ class RunTests
45
45
  }
46
46
  if(arg.startsWith('--suite=')){
47
47
  this.suite = arg.split('=')[1];
48
- Logger.info('Suite: '+this.suite+'\n');
48
+ Logger.info('Suite: '+this.suite);
49
49
  }
50
50
  if(arg.startsWith('--driver=')){
51
51
  this.driver = arg.split('=')[1];
52
- Logger.info('Driver: '+this.driver+'\n');
52
+ Logger.info('Driver: '+this.driver);
53
53
  }
54
54
  if('--skip-cleanup' === arg){
55
55
  this.skipCleanup = true;
@@ -284,7 +284,7 @@ class TestHelpers
284
284
  {name: '@prisma/client', version: '6.19.2'},
285
285
  {name: 'knex', version: '3.1.0'},
286
286
  {name: 'mysql', version: '2.18.1'},
287
- {name: 'mysql2', version: '3.16.2'},
287
+ {name: 'mysql2', version: '3.16.3'},
288
288
  {name: 'objection', version: '3.1.5'},
289
289
  {name: 'prisma', version: '6.19.2'}
290
290
  ];
@@ -584,7 +584,7 @@ class TestHelpers
584
584
  __dirname,
585
585
  '..',
586
586
  'fixtures',
587
- 'expected-entities-'+driverName,
587
+ relativePath.startsWith('models/') ? 'expected-entities-'+driverName : 'expected-entities',
588
588
  relativePath
589
589
  );
590
590
  let generatedPath = FileHandler.joinPaths(
@@ -22,7 +22,7 @@ class TestRunner
22
22
  suite(name)
23
23
  {
24
24
  this.currentSuite = name;
25
- Logger.info('\n▶ '+name);
25
+ Logger.info('▶ '+name);
26
26
  }
27
27
 
28
28
  group(name)
@@ -1,70 +0,0 @@
1
- /**
2
- *
3
- * Reldens - TestCategoriesEntity
4
- *
5
- */
6
-
7
- const { EntityProperties } = require('../../index');
8
- const { sc } = require('@reldens/utils');
9
-
10
- class TestCategoriesEntity extends EntityProperties
11
- {
12
-
13
- static propertiesConfig(extraProps)
14
- {
15
- let titleProperty = 'name';
16
- let properties = {
17
- id: {
18
- isId: true,
19
- type: 'number',
20
- isRequired: true,
21
- dbType: 'int'
22
- },
23
- [titleProperty]: {
24
- isRequired: true,
25
- dbType: 'varchar'
26
- },
27
- slug: {
28
- isRequired: true,
29
- dbType: 'varchar'
30
- },
31
- description: {
32
- type: 'textarea',
33
- dbType: 'text'
34
- },
35
- is_active: {
36
- type: 'boolean',
37
- dbType: 'tinyint'
38
- },
39
- display_order: {
40
- type: 'number',
41
- dbType: 'int'
42
- },
43
- created_at: {
44
- type: 'datetime',
45
- dbType: 'timestamp'
46
- },
47
- updated_at: {
48
- type: 'datetime',
49
- dbType: 'timestamp'
50
- }
51
- };
52
- let propertiesKeys = Object.keys(properties);
53
- let showProperties = propertiesKeys;
54
- let editProperties = sc.removeFromArray([...propertiesKeys], ['id', 'created_at', 'updated_at']);
55
- let listProperties = [...propertiesKeys];
56
- listProperties.splice(listProperties.indexOf('description'), 1);
57
- return {
58
- showProperties,
59
- editProperties,
60
- listProperties,
61
- filterProperties: listProperties,
62
- properties,
63
- titleProperty,
64
- ...extraProps
65
- };
66
- }
67
-
68
- }
69
-
70
- module.exports.TestCategoriesEntity = TestCategoriesEntity;
@@ -1,95 +0,0 @@
1
- /**
2
- *
3
- * Reldens - TestProductsEntity
4
- *
5
- */
6
-
7
- const { EntityProperties } = require('../../index');
8
- const { sc } = require('@reldens/utils');
9
-
10
- class TestProductsEntity extends EntityProperties
11
- {
12
-
13
- static propertiesConfig(extraProps)
14
- {
15
- let titleProperty = 'name';
16
- let properties = {
17
- id: {
18
- isId: true,
19
- type: 'number',
20
- isRequired: true,
21
- dbType: 'int'
22
- },
23
- category_id: {
24
- type: 'reference',
25
- reference: 'test_categories',
26
- isRequired: true,
27
- dbType: 'int'
28
- },
29
- [titleProperty]: {
30
- isRequired: true,
31
- dbType: 'varchar'
32
- },
33
- sku: {
34
- isRequired: true,
35
- dbType: 'varchar'
36
- },
37
- description: {
38
- type: 'textarea',
39
- dbType: 'text'
40
- },
41
- price: {
42
- type: 'number',
43
- isRequired: true,
44
- dbType: 'decimal'
45
- },
46
- stock_quantity: {
47
- type: 'number',
48
- dbType: 'int'
49
- },
50
- is_featured: {
51
- type: 'boolean',
52
- dbType: 'tinyint'
53
- },
54
- metadata: {
55
- type: 'textarea',
56
- dbType: 'json'
57
- },
58
- tags: {
59
- dbType: 'varchar'
60
- },
61
- status: {
62
- availableValues: [
63
- {value: 1, label: 'draft'},
64
- {value: 2, label: 'published'},
65
- {value: 3, label: 'archived'}
66
- ],
67
- dbType: 'enum'
68
- },
69
- created_at: {
70
- type: 'datetime',
71
- dbType: 'timestamp'
72
- },
73
- updated_at: {
74
- type: 'datetime',
75
- dbType: 'timestamp'
76
- }
77
- };
78
- let propertiesKeys = Object.keys(properties);
79
- let showProperties = propertiesKeys;
80
- let editProperties = sc.removeFromArray([...propertiesKeys], ['id', 'created_at', 'updated_at']);
81
- let listProperties = sc.removeFromArray([...propertiesKeys], ['description', 'metadata']);
82
- return {
83
- showProperties,
84
- editProperties,
85
- listProperties,
86
- filterProperties: listProperties,
87
- properties,
88
- titleProperty,
89
- ...extraProps
90
- };
91
- }
92
-
93
- }
94
-
95
- module.exports.TestProductsEntity = TestProductsEntity;
@@ -1,13 +0,0 @@
1
- /**
2
- *
3
- * Reldens - Entities Translations
4
- *
5
- */
6
-
7
- module.exports.entitiesTranslations = {
8
- labels: {
9
- 'test_categories': 'Test Categories',
10
- 'test_products': 'Test Products',
11
- 'test_reviews': 'Test Reviews'
12
- }
13
- };