@goatlab/fluent 0.6.16 → 0.6.19

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 (192) hide show
  1. package/dist/BaseConnector.d.ts +14 -10
  2. package/dist/BaseConnector.js +74 -39
  3. package/dist/Fluent.d.ts +0 -0
  4. package/dist/Fluent.js +0 -0
  5. package/dist/TypeOrmConnector/TypeOrmConnector.d.ts +3 -2
  6. package/dist/TypeOrmConnector/TypeOrmConnector.js +15 -5
  7. package/dist/TypeOrmConnector/TypeOrmMongoConnector._bypass.d.ts +0 -0
  8. package/dist/TypeOrmConnector/TypeOrmMongoConnector._bypass.js +0 -0
  9. package/dist/TypeOrmConnector/TypeOrmMysqlConnector._bypass.d.ts +0 -0
  10. package/dist/TypeOrmConnector/TypeOrmMysqlConnector._bypass.js +0 -0
  11. package/dist/TypeOrmConnector/test/advanced/advancedTestSuite.d.ts +0 -0
  12. package/dist/TypeOrmConnector/test/advanced/advancedTestSuite.js +15 -14
  13. package/dist/TypeOrmConnector/test/advanced/typeOrm.entity.d.ts +0 -0
  14. package/dist/TypeOrmConnector/test/advanced/typeOrm.entity.js +0 -0
  15. package/dist/TypeOrmConnector/test/advanced/typeOrm.repository.d.ts +0 -0
  16. package/dist/TypeOrmConnector/test/advanced/typeOrm.repository.js +0 -0
  17. package/dist/TypeOrmConnector/test/basic/basicTestSuite.d.ts +0 -0
  18. package/dist/TypeOrmConnector/test/basic/basicTestSuite.js +0 -0
  19. package/dist/TypeOrmConnector/test/basic/goat.dto.d.ts +0 -0
  20. package/dist/TypeOrmConnector/test/basic/goat.dto.js +0 -0
  21. package/dist/TypeOrmConnector/test/basic/goat.entity.d.ts +0 -0
  22. package/dist/TypeOrmConnector/test/basic/goat.entity.js +0 -0
  23. package/dist/TypeOrmConnector/test/basic/goat.repository.d.ts +0 -0
  24. package/dist/TypeOrmConnector/test/basic/goat.repository.js +0 -0
  25. package/dist/TypeOrmConnector/test/dbEntities.d.ts +0 -0
  26. package/dist/TypeOrmConnector/test/dbEntities.js +0 -0
  27. package/dist/TypeOrmConnector/test/flock.d.ts +0 -0
  28. package/dist/TypeOrmConnector/test/flock.js +0 -0
  29. package/dist/TypeOrmConnector/test/memoryDataSource.d.ts +0 -0
  30. package/dist/TypeOrmConnector/test/memoryDataSource.js +0 -0
  31. package/dist/TypeOrmConnector/test/relations/car/car.dto.d.ts +0 -0
  32. package/dist/TypeOrmConnector/test/relations/car/car.dto.js +0 -0
  33. package/dist/TypeOrmConnector/test/relations/car/car.entity.d.ts +0 -0
  34. package/dist/TypeOrmConnector/test/relations/car/car.entity.js +0 -0
  35. package/dist/TypeOrmConnector/test/relations/car/car.repositoryTypeOrm.d.ts +0 -0
  36. package/dist/TypeOrmConnector/test/relations/car/car.repositoryTypeOrm.js +0 -0
  37. package/dist/TypeOrmConnector/test/relations/relationsTestsSuite.d.ts +1 -1
  38. package/dist/TypeOrmConnector/test/relations/relationsTestsSuite.js +21 -18
  39. package/dist/TypeOrmConnector/test/relations/roles/role.dto.d.ts +0 -0
  40. package/dist/TypeOrmConnector/test/relations/roles/role.dto.js +0 -0
  41. package/dist/TypeOrmConnector/test/relations/roles/roles.entity.d.ts +0 -0
  42. package/dist/TypeOrmConnector/test/relations/roles/roles.entity.js +0 -0
  43. package/dist/TypeOrmConnector/test/relations/roles/roles.repositoryTypeOrm.d.ts +0 -0
  44. package/dist/TypeOrmConnector/test/relations/roles/roles.repositoryTypeOrm.js +0 -0
  45. package/dist/TypeOrmConnector/test/relations/roles/roles_user.dto.d.ts +0 -0
  46. package/dist/TypeOrmConnector/test/relations/roles/roles_user.dto.js +0 -0
  47. package/dist/TypeOrmConnector/test/relations/roles/roles_user.entity.d.ts +0 -0
  48. package/dist/TypeOrmConnector/test/relations/roles/roles_user.entity.js +0 -0
  49. package/dist/TypeOrmConnector/test/relations/roles/roles_users.repositoryTypeOrm.d.ts +0 -0
  50. package/dist/TypeOrmConnector/test/relations/roles/roles_users.repositoryTypeOrm.js +0 -0
  51. package/dist/TypeOrmConnector/test/relations/user/user.dto.d.ts +0 -0
  52. package/dist/TypeOrmConnector/test/relations/user/user.dto.js +0 -0
  53. package/dist/TypeOrmConnector/test/relations/user/user.entity.d.ts +0 -0
  54. package/dist/TypeOrmConnector/test/relations/user/user.entity.js +0 -0
  55. package/dist/TypeOrmConnector/test/relations/user/user.repositoryTypeOrm.d.ts +0 -0
  56. package/dist/TypeOrmConnector/test/relations/user/user.repositoryTypeOrm.js +0 -0
  57. package/dist/core/Loopback/build-schema.d.ts +0 -0
  58. package/dist/core/Loopback/build-schema.js +0 -0
  59. package/dist/core/Loopback/common-types.d.ts +0 -0
  60. package/dist/core/Loopback/common-types.js +0 -0
  61. package/dist/core/Loopback/json-to-schema.d.ts +0 -0
  62. package/dist/core/Loopback/json-to-schema.js +0 -0
  63. package/dist/core/Loopback/metadata.d.ts +0 -0
  64. package/dist/core/Loopback/metadata.js +0 -0
  65. package/dist/core/Loopback/model.d.ts +0 -0
  66. package/dist/core/Loopback/model.js +0 -0
  67. package/dist/core/Loopback/query.d.ts +0 -0
  68. package/dist/core/Loopback/query.js +0 -0
  69. package/dist/core/Loopback/relation.types.d.ts +0 -0
  70. package/dist/core/Loopback/relation.types.js +0 -0
  71. package/dist/core/Loopback/type-resolver.d.ts +0 -0
  72. package/dist/core/Loopback/type-resolver.js +0 -0
  73. package/dist/core/Loopback/type.d.ts +0 -0
  74. package/dist/core/Loopback/type.js +0 -0
  75. package/dist/core/Nestjs/applyDecorators.d.ts +0 -0
  76. package/dist/core/Nestjs/applyDecorators.js +0 -0
  77. package/dist/core/Nestjs/types/common.d.ts +0 -0
  78. package/dist/core/Nestjs/types/common.js +0 -0
  79. package/dist/core/Nestjs/types/decorators/api-hide-property.decorator.d.ts +0 -0
  80. package/dist/core/Nestjs/types/decorators/api-hide-property.decorator.js +0 -0
  81. package/dist/core/Nestjs/types/decorators/api-property.decorator.d.ts +0 -0
  82. package/dist/core/Nestjs/types/decorators/api-property.decorator.js +0 -0
  83. package/dist/core/Nestjs/types/decorators/apply-is-optional.decorator.d.ts +0 -0
  84. package/dist/core/Nestjs/types/decorators/apply-is-optional.decorator.js +0 -0
  85. package/dist/core/Nestjs/types/decorators/args-type.decorator.d.ts +0 -0
  86. package/dist/core/Nestjs/types/decorators/args-type.decorator.js +0 -0
  87. package/dist/core/Nestjs/types/decorators/create-property.decorator.d.ts +0 -0
  88. package/dist/core/Nestjs/types/decorators/create-property.decorator.js +0 -0
  89. package/dist/core/Nestjs/types/decorators/directive.decorator.d.ts +0 -0
  90. package/dist/core/Nestjs/types/decorators/directive.decorator.js +0 -0
  91. package/dist/core/Nestjs/types/decorators/extensions.decorator.d.ts +0 -0
  92. package/dist/core/Nestjs/types/decorators/extensions.decorator.js +0 -0
  93. package/dist/core/Nestjs/types/decorators/field.decorator.d.ts +0 -0
  94. package/dist/core/Nestjs/types/decorators/field.decorator.js +0 -0
  95. package/dist/core/Nestjs/types/decorators/input-type.decorator.d.ts +0 -0
  96. package/dist/core/Nestjs/types/decorators/input-type.decorator.js +0 -0
  97. package/dist/core/Nestjs/types/decorators/interface-type.decorator.d.ts +0 -0
  98. package/dist/core/Nestjs/types/decorators/interface-type.decorator.js +0 -0
  99. package/dist/core/Nestjs/types/decorators/partial-type.helper.d.ts +0 -0
  100. package/dist/core/Nestjs/types/decorators/partial-type.helper.js +0 -0
  101. package/dist/core/Nestjs/types/errors/cannot-determine-host-type.error.d.ts +0 -0
  102. package/dist/core/Nestjs/types/errors/cannot-determine-host-type.error.js +0 -0
  103. package/dist/core/Nestjs/types/errors/directive-parsing.error.d.ts +0 -0
  104. package/dist/core/Nestjs/types/errors/directive-parsing.error.js +0 -0
  105. package/dist/core/Nestjs/types/errors/unable-to-find-fields.error.d.ts +0 -0
  106. package/dist/core/Nestjs/types/errors/unable-to-find-fields.error.js +0 -0
  107. package/dist/core/Nestjs/types/errors/undefined-type.error.d.ts +0 -0
  108. package/dist/core/Nestjs/types/errors/undefined-type.error.js +0 -0
  109. package/dist/core/Nestjs/types/interfaces/add-class-type-metadata.util.d.ts +0 -0
  110. package/dist/core/Nestjs/types/interfaces/add-class-type-metadata.util.js +0 -0
  111. package/dist/core/Nestjs/types/interfaces/base-type-options.interface.d.ts +0 -0
  112. package/dist/core/Nestjs/types/interfaces/base-type-options.interface.js +0 -0
  113. package/dist/core/Nestjs/types/interfaces/class-decorator-factory.interface.d.ts +0 -0
  114. package/dist/core/Nestjs/types/interfaces/class-decorator-factory.interface.js +0 -0
  115. package/dist/core/Nestjs/types/interfaces/complexity.interface.d.ts +0 -0
  116. package/dist/core/Nestjs/types/interfaces/complexity.interface.js +0 -0
  117. package/dist/core/Nestjs/types/interfaces/field-middleware.interface.d.ts +0 -0
  118. package/dist/core/Nestjs/types/interfaces/field-middleware.interface.js +0 -0
  119. package/dist/core/Nestjs/types/interfaces/open-api-spec.interface.d.ts +0 -0
  120. package/dist/core/Nestjs/types/interfaces/open-api-spec.interface.js +0 -0
  121. package/dist/core/Nestjs/types/interfaces/resolve-type-fn.interface.d.ts +0 -0
  122. package/dist/core/Nestjs/types/interfaces/resolve-type-fn.interface.js +0 -0
  123. package/dist/core/Nestjs/types/interfaces/return-type-func.interface.d.ts +0 -0
  124. package/dist/core/Nestjs/types/interfaces/return-type-func.interface.js +0 -0
  125. package/dist/core/Nestjs/types/interfaces/schema-object-metadata.interface.d.ts +0 -0
  126. package/dist/core/Nestjs/types/interfaces/schema-object-metadata.interface.js +0 -0
  127. package/dist/core/Nestjs/types/interfaces/type-options.interface.d.ts +0 -0
  128. package/dist/core/Nestjs/types/interfaces/type-options.interface.js +0 -0
  129. package/dist/core/Nestjs/types/lazy-metadata.storage.d.ts +0 -0
  130. package/dist/core/Nestjs/types/lazy-metadata.storage.js +0 -0
  131. package/dist/core/Nestjs/types/metadata/class.metadata.d.ts +0 -0
  132. package/dist/core/Nestjs/types/metadata/class.metadata.js +0 -0
  133. package/dist/core/Nestjs/types/metadata/directive.metadata.d.ts +0 -0
  134. package/dist/core/Nestjs/types/metadata/directive.metadata.js +0 -0
  135. package/dist/core/Nestjs/types/metadata/enum.metadata.d.ts +0 -0
  136. package/dist/core/Nestjs/types/metadata/enum.metadata.js +0 -0
  137. package/dist/core/Nestjs/types/metadata/extensions.metadata.d.ts +0 -0
  138. package/dist/core/Nestjs/types/metadata/extensions.metadata.js +0 -0
  139. package/dist/core/Nestjs/types/metadata/index.d.ts +0 -0
  140. package/dist/core/Nestjs/types/metadata/index.js +0 -0
  141. package/dist/core/Nestjs/types/metadata/interface.metadata.d.ts +0 -0
  142. package/dist/core/Nestjs/types/metadata/interface.metadata.js +0 -0
  143. package/dist/core/Nestjs/types/metadata/object-type.metadata.d.ts +0 -0
  144. package/dist/core/Nestjs/types/metadata/object-type.metadata.js +0 -0
  145. package/dist/core/Nestjs/types/metadata/param.metadata.d.ts +0 -0
  146. package/dist/core/Nestjs/types/metadata/param.metadata.js +0 -0
  147. package/dist/core/Nestjs/types/metadata/property.metadata.d.ts +0 -0
  148. package/dist/core/Nestjs/types/metadata/property.metadata.js +0 -0
  149. package/dist/core/Nestjs/types/metadata/resolver.metadata.d.ts +0 -0
  150. package/dist/core/Nestjs/types/metadata/resolver.metadata.js +0 -0
  151. package/dist/core/Nestjs/types/metadata/union.metadata.d.ts +0 -0
  152. package/dist/core/Nestjs/types/metadata/union.metadata.js +0 -0
  153. package/dist/core/Nestjs/types/object-type.decorator.d.ts +0 -0
  154. package/dist/core/Nestjs/types/object-type.decorator.js +0 -0
  155. package/dist/core/Nestjs/types/omit-type.d.ts +0 -0
  156. package/dist/core/Nestjs/types/omit-type.js +0 -0
  157. package/dist/core/Nestjs/types/reflection.utils.d.ts +0 -0
  158. package/dist/core/Nestjs/types/reflection.utils.js +0 -0
  159. package/dist/core/Nestjs/types/set-metadata.decorator.d.ts +0 -0
  160. package/dist/core/Nestjs/types/set-metadata.decorator.js +0 -0
  161. package/dist/core/Nestjs/types/type-metadata.storage.d.ts +0 -0
  162. package/dist/core/Nestjs/types/type-metadata.storage.js +0 -0
  163. package/dist/core/Nestjs/types/utils/enum.utils.d.ts +0 -0
  164. package/dist/core/Nestjs/types/utils/enum.utils.js +0 -0
  165. package/dist/core/Nestjs/types/utils/get-fields-and-decorator.util.d.ts +0 -0
  166. package/dist/core/Nestjs/types/utils/get-fields-and-decorator.util.js +0 -0
  167. package/dist/core/Nestjs/types/utils/mapped-types.utils.d.ts +0 -0
  168. package/dist/core/Nestjs/types/utils/mapped-types.utils.js +0 -0
  169. package/dist/core/Nestjs/types/utils/model-properties-accessor.d.ts +0 -0
  170. package/dist/core/Nestjs/types/utils/model-properties-accessor.js +0 -0
  171. package/dist/core/Nestjs/types/utils/type-helpers.utils.d.ts +0 -0
  172. package/dist/core/Nestjs/types/utils/type-helpers.utils.js +0 -0
  173. package/dist/core/dtos/access.dto.d.ts +0 -0
  174. package/dist/core/dtos/access.dto.js +0 -0
  175. package/dist/core/dtos/pagination.dto.d.ts +0 -0
  176. package/dist/core/dtos/pagination.dto.js +0 -0
  177. package/dist/core/types.d.ts +0 -0
  178. package/dist/core/types.js +0 -0
  179. package/dist/decorators.d.ts +0 -0
  180. package/dist/decorators.js +0 -0
  181. package/dist/generatorDatasource.d.ts +0 -0
  182. package/dist/generatorDatasource.js +0 -0
  183. package/dist/index.d.ts +0 -0
  184. package/dist/index.js +0 -0
  185. package/dist/loadRelations.d.ts +2 -1
  186. package/dist/loadRelations.js +13 -18
  187. package/dist/outputKeys.d.ts +0 -0
  188. package/dist/outputKeys.js +0 -0
  189. package/dist/tsconfig.tsbuildinfo +1 -1
  190. package/dist/types.d.ts +0 -0
  191. package/dist/types.js +0 -0
  192. package/package.json +1 -1
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
package/dist/index.d.ts CHANGED
File without changes
package/dist/index.js CHANGED
File without changes
@@ -6,6 +6,7 @@ interface RelationshipLoader {
6
6
  dataSource?: DataSource;
7
7
  provider?: 'typeorm' | 'firebase';
8
8
  self: any;
9
+ returnPivot?: boolean;
9
10
  }
10
- export declare const loadRelations: ({ data, relations, modelRelations, dataSource, provider, self }: RelationshipLoader) => Promise<any[]>;
11
+ export declare const loadRelations: ({ data, relations, modelRelations, provider, self, returnPivot }: RelationshipLoader) => Promise<any[]>;
11
12
  export {};
@@ -2,8 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.loadRelations = void 0;
4
4
  const js_utils_1 = require("@goatlab/js-utils");
5
- const TypeOrmConnector_1 = require("./TypeOrmConnector/TypeOrmConnector");
6
- const loadRelations = async ({ data, relations, modelRelations, dataSource, provider, self }) => {
5
+ const loadRelations = async ({ data, relations, modelRelations, provider, self, returnPivot }) => {
7
6
  if (!relations) {
8
7
  return data;
9
8
  }
@@ -11,21 +10,13 @@ const loadRelations = async ({ data, relations, modelRelations, dataSource, prov
11
10
  for (const relation of Object.keys(relations)) {
12
11
  if (modelRelations[relation]) {
13
12
  const relationModel = modelRelations[relation];
14
- let firebaseConnector;
15
- if (provider === 'firebase') {
16
- firebaseConnector = require('@goatlab/fluent-firebase').FirebaseConnector;
17
- }
18
- const Model = typeof self[relation] === 'function'
19
- ? self[relation]()
20
- : provider === 'typeorm'
21
- ? new TypeOrmConnector_1.TypeOrmConnector(relationModel.targetClass, dataSource)
22
- : new firebaseConnector(relationModel.targetClass);
13
+ const Model = new relations[relation]();
23
14
  if (relationModel.isOneToMany) {
24
- const ids = js_utils_1.Arrays.deDuplicate(data.map(d => Model.isMongoDB ? js_utils_1.Ids.objectID(d.id) : d.id));
25
- const chunks = js_utils_1.Arrays.chunk(ids, chunkSize);
15
+ const ids = new Set(data.map(d => Model.isMongoDB ? js_utils_1.Ids.objectID(d.id) : d.id));
16
+ const chunks = js_utils_1.Arrays.chunk(Array.from(ids), chunkSize);
26
17
  const promises = [];
27
18
  for (const relatedIds of chunks) {
28
- const results = await Model.andWhere(Model._keys[relationModel.inverseSidePropertyPath], 'in', relatedIds).get();
19
+ const results = await Model.andWhere(keys => keys[relationModel.inverseSidePropertyPath], 'in', relatedIds).get();
29
20
  promises.push(results);
30
21
  }
31
22
  const relatedResults = js_utils_1.Arrays.collapse(await Promise.all(promises));
@@ -41,7 +32,7 @@ const loadRelations = async ({ data, relations, modelRelations, dataSource, prov
41
32
  const chunks = js_utils_1.Arrays.chunk(ids, chunkSize);
42
33
  const promises = [];
43
34
  for (const relatedIds of chunks) {
44
- const results = await Model.andWhere(Model._keys.id, 'in', relatedIds).get();
35
+ const results = await Model.andWhere(keys => keys.id, 'in', relatedIds).get();
45
36
  promises.push(results);
46
37
  }
47
38
  const relatedResults = js_utils_1.Arrays.collapse(promises);
@@ -63,7 +54,7 @@ const loadRelations = async ({ data, relations, modelRelations, dataSource, prov
63
54
  const promises = [];
64
55
  for (const pivotIds of chunks) {
65
56
  const results = await pivotRepository
66
- .where(relationModel.joinColumns[0].propertyName, 'in', pivotIds)
57
+ .where(k => k[relationModel.joinColumns[0].propertyName], 'in', pivotIds)
67
58
  .get();
68
59
  promises.push(results);
69
60
  }
@@ -72,10 +63,14 @@ const loadRelations = async ({ data, relations, modelRelations, dataSource, prov
72
63
  const relationChunks = js_utils_1.Arrays.chunk(uniquePivotIds, chunkSize);
73
64
  const relationPromises = [];
74
65
  for (const relatedIds of relationChunks) {
75
- const results = await Model.andWhere(Model._keys.id, 'in', relatedIds).get();
66
+ const results = await Model.andWhere(keys => keys.id, 'in', relatedIds).get();
76
67
  relationPromises.push(results);
77
68
  }
78
- const relatedResults = js_utils_1.Arrays.collapse(await Promise.all(relationPromises));
69
+ let relatedResults = js_utils_1.Arrays.collapse(await Promise.all(relationPromises));
70
+ const pivotInverseKey = relationModel.inverseJoinColumns[0].propertyName;
71
+ relatedResults = relatedResults.map(r => {
72
+ return { ...r, pivot: pivotResults.find(p => p[pivotInverseKey] === r.id) };
73
+ });
79
74
  const groupedPivot = js_utils_1.Arrays.groupBy(pivotResults, r => r[relationModel.joinColumns[0].propertyName]);
80
75
  const groupedRelated = js_utils_1.Arrays.groupBy(relatedResults, r => r.id);
81
76
  data.forEach(d => {
File without changes
File without changes