@goatlab/fluent 0.7.31 → 0.7.32

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 (262) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +0 -0
  3. package/package.json +34 -34
  4. package/dist/BaseConnector.d.ts +0 -43
  5. package/dist/BaseConnector.js +0 -257
  6. package/dist/Fluent.d.ts +0 -7
  7. package/dist/Fluent.js +0 -22
  8. package/dist/FluentConnectorInterface.d.ts +0 -17
  9. package/dist/FluentConnectorInterface.js +0 -2
  10. package/dist/FluentEntity.d.ts +0 -7
  11. package/dist/FluentEntity.js +0 -28
  12. package/dist/TypeOrmConnector/TypeOrmConnector.d.ts +0 -39
  13. package/dist/TypeOrmConnector/TypeOrmConnector.js +0 -392
  14. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoBaseAggregations.d.ts +0 -7
  15. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoBaseAggregations.js +0 -149
  16. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoFindAggregatedQuery.d.ts +0 -6
  17. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoFindAggregatedQuery.js +0 -46
  18. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoOrderBy.d.ts +0 -4
  19. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoOrderBy.js +0 -19
  20. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoSelect.d.ts +0 -4
  21. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoSelect.js +0 -12
  22. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoWhere.d.ts +0 -6
  23. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoWhere.js +0 -166
  24. package/dist/TypeOrmConnector/queryBuilder/sql/getQueryBuilderWhere.d.ts +0 -8
  25. package/dist/TypeOrmConnector/queryBuilder/sql/getQueryBuilderWhere.js +0 -200
  26. package/dist/TypeOrmConnector/queryBuilder/sql/getTypeOrmWhere.d.ts +0 -6
  27. package/dist/TypeOrmConnector/queryBuilder/sql/getTypeOrmWhere.js +0 -207
  28. package/dist/TypeOrmConnector/test/advanced/advancedTestSuite.d.ts +0 -1
  29. package/dist/TypeOrmConnector/test/advanced/advancedTestSuite.js +0 -256
  30. package/dist/TypeOrmConnector/test/advanced/typeOrm.entity.d.ts +0 -116
  31. package/dist/TypeOrmConnector/test/advanced/typeOrm.entity.js +0 -74
  32. package/dist/TypeOrmConnector/test/advanced/typeOrm.mongo.repository.d.ts +0 -5
  33. package/dist/TypeOrmConnector/test/advanced/typeOrm.mongo.repository.js +0 -17
  34. package/dist/TypeOrmConnector/test/advanced/typeOrm.mysql.repository.d.ts +0 -5
  35. package/dist/TypeOrmConnector/test/advanced/typeOrm.mysql.repository.js +0 -17
  36. package/dist/TypeOrmConnector/test/advanced/typeOrm.repository.d.ts +0 -5
  37. package/dist/TypeOrmConnector/test/advanced/typeOrm.repository.js +0 -17
  38. package/dist/TypeOrmConnector/test/basic/basicTestSuite.d.ts +0 -1
  39. package/dist/TypeOrmConnector/test/basic/basicTestSuite.js +0 -193
  40. package/dist/TypeOrmConnector/test/basic/goat.entity.d.ts +0 -53
  41. package/dist/TypeOrmConnector/test/basic/goat.entity.js +0 -53
  42. package/dist/TypeOrmConnector/test/basic/goat.mongo.repository.d.ts +0 -5
  43. package/dist/TypeOrmConnector/test/basic/goat.mongo.repository.js +0 -16
  44. package/dist/TypeOrmConnector/test/basic/goat.mysql.repository.d.ts +0 -5
  45. package/dist/TypeOrmConnector/test/basic/goat.mysql.repository.js +0 -16
  46. package/dist/TypeOrmConnector/test/basic/goat.repository.d.ts +0 -5
  47. package/dist/TypeOrmConnector/test/basic/goat.repository.js +0 -16
  48. package/dist/TypeOrmConnector/test/dbEntities.d.ts +0 -6
  49. package/dist/TypeOrmConnector/test/dbEntities.js +0 -17
  50. package/dist/TypeOrmConnector/test/docker/docker.d.ts +0 -35
  51. package/dist/TypeOrmConnector/test/docker/docker.js +0 -148
  52. package/dist/TypeOrmConnector/test/docker/mongo.d.ts +0 -16
  53. package/dist/TypeOrmConnector/test/docker/mongo.js +0 -93
  54. package/dist/TypeOrmConnector/test/docker/mysql.d.ts +0 -17
  55. package/dist/TypeOrmConnector/test/docker/mysql.js +0 -132
  56. package/dist/TypeOrmConnector/test/flock.d.ts +0 -4
  57. package/dist/TypeOrmConnector/test/flock.js +0 -25
  58. package/dist/TypeOrmConnector/test/mongo/car.mongo.repository.d.ts +0 -10
  59. package/dist/TypeOrmConnector/test/mongo/car.mongo.repository.js +0 -28
  60. package/dist/TypeOrmConnector/test/mongo/mongoDatasource.d.ts +0 -2
  61. package/dist/TypeOrmConnector/test/mongo/mongoDatasource.js +0 -12
  62. package/dist/TypeOrmConnector/test/mongo/roles.mongo.repository.d.ts +0 -9
  63. package/dist/TypeOrmConnector/test/mongo/roles.mongo.repository.js +0 -25
  64. package/dist/TypeOrmConnector/test/mongo/roles_user.mongo.repository.d.ts +0 -6
  65. package/dist/TypeOrmConnector/test/mongo/roles_user.mongo.repository.js +0 -17
  66. package/dist/TypeOrmConnector/test/mongo/user.mongo.repository.d.ts +0 -10
  67. package/dist/TypeOrmConnector/test/mongo/user.mongo.repository.js +0 -32
  68. package/dist/TypeOrmConnector/test/mysql/car.mysql.repository.d.ts +0 -10
  69. package/dist/TypeOrmConnector/test/mysql/car.mysql.repository.js +0 -26
  70. package/dist/TypeOrmConnector/test/mysql/mysqlDataSource.d.ts +0 -2
  71. package/dist/TypeOrmConnector/test/mysql/mysqlDataSource.js +0 -16
  72. package/dist/TypeOrmConnector/test/mysql/roles.mysql.repository.d.ts +0 -9
  73. package/dist/TypeOrmConnector/test/mysql/roles.mysql.repository.js +0 -25
  74. package/dist/TypeOrmConnector/test/mysql/roles_user.mysql.repository.d.ts +0 -6
  75. package/dist/TypeOrmConnector/test/mysql/roles_user.mysql.repository.js +0 -17
  76. package/dist/TypeOrmConnector/test/mysql/user.mysql.repository.d.ts +0 -10
  77. package/dist/TypeOrmConnector/test/mysql/user.mysql.repository.js +0 -33
  78. package/dist/TypeOrmConnector/test/relations/car/car.entity.d.ts +0 -7
  79. package/dist/TypeOrmConnector/test/relations/car/car.entity.js +0 -32
  80. package/dist/TypeOrmConnector/test/relations/car/car.output.schema.d.ts +0 -511
  81. package/dist/TypeOrmConnector/test/relations/car/car.output.schema.js +0 -8
  82. package/dist/TypeOrmConnector/test/relations/car/car.repositoryTypeOrm.d.ts +0 -10
  83. package/dist/TypeOrmConnector/test/relations/car/car.repositoryTypeOrm.js +0 -26
  84. package/dist/TypeOrmConnector/test/relations/car/car.schema.d.ts +0 -15
  85. package/dist/TypeOrmConnector/test/relations/car/car.schema.js +0 -9
  86. package/dist/TypeOrmConnector/test/relations/relationsTestsSuite.d.ts +0 -1
  87. package/dist/TypeOrmConnector/test/relations/relationsTestsSuite.js +0 -575
  88. package/dist/TypeOrmConnector/test/relations/roles/role.output.schema.d.ts +0 -152
  89. package/dist/TypeOrmConnector/test/relations/roles/role.output.schema.js +0 -14
  90. package/dist/TypeOrmConnector/test/relations/roles/role.schema.d.ts +0 -12
  91. package/dist/TypeOrmConnector/test/relations/roles/role.schema.js +0 -8
  92. package/dist/TypeOrmConnector/test/relations/roles/roles.entity.d.ts +0 -6
  93. package/dist/TypeOrmConnector/test/relations/roles/roles.entity.js +0 -29
  94. package/dist/TypeOrmConnector/test/relations/roles/roles.repositoryTypeOrm.d.ts +0 -9
  95. package/dist/TypeOrmConnector/test/relations/roles/roles.repositoryTypeOrm.js +0 -25
  96. package/dist/TypeOrmConnector/test/relations/roles/roles_user.entity.d.ts +0 -5
  97. package/dist/TypeOrmConnector/test/relations/roles/roles_user.entity.js +0 -23
  98. package/dist/TypeOrmConnector/test/relations/roles/roles_user.schema.d.ts +0 -15
  99. package/dist/TypeOrmConnector/test/relations/roles/roles_user.schema.js +0 -9
  100. package/dist/TypeOrmConnector/test/relations/roles/roles_users.repositoryTypeOrm.d.ts +0 -6
  101. package/dist/TypeOrmConnector/test/relations/roles/roles_users.repositoryTypeOrm.js +0 -17
  102. package/dist/TypeOrmConnector/test/relations/user/user.entity.d.ts +0 -14
  103. package/dist/TypeOrmConnector/test/relations/user/user.entity.js +0 -56
  104. package/dist/TypeOrmConnector/test/relations/user/user.repositoryTypeOrm.d.ts +0 -10
  105. package/dist/TypeOrmConnector/test/relations/user/user.repositoryTypeOrm.js +0 -30
  106. package/dist/TypeOrmConnector/test/relations/user/user.schema.d.ts +0 -546
  107. package/dist/TypeOrmConnector/test/relations/user/user.schema.js +0 -67
  108. package/dist/TypeOrmConnector/test/sqlite/memoryDataSource.d.ts +0 -2
  109. package/dist/TypeOrmConnector/test/sqlite/memoryDataSource.js +0 -12
  110. package/dist/TypeOrmConnector/util/clearEmpties.d.ts +0 -1
  111. package/dist/TypeOrmConnector/util/clearEmpties.js +0 -25
  112. package/dist/TypeOrmConnector/util/extractConditions.d.ts +0 -6
  113. package/dist/TypeOrmConnector/util/extractConditions.js +0 -80
  114. package/dist/TypeOrmConnector/util/extractInclude.d.ts +0 -2
  115. package/dist/TypeOrmConnector/util/extractInclude.js +0 -25
  116. package/dist/TypeOrmConnector/util/extractMetadataFromKeys.d.ts +0 -12
  117. package/dist/TypeOrmConnector/util/extractMetadataFromKeys.js +0 -42
  118. package/dist/TypeOrmConnector/util/extractOrderBy.d.ts +0 -4
  119. package/dist/TypeOrmConnector/util/extractOrderBy.js +0 -18
  120. package/dist/TypeOrmConnector/util/getRelationsFromModelGenerator.d.ts +0 -19
  121. package/dist/TypeOrmConnector/util/getRelationsFromModelGenerator.js +0 -26
  122. package/dist/TypeOrmConnector/util/getSelectedKeysFromRawSql.d.ts +0 -1
  123. package/dist/TypeOrmConnector/util/getSelectedKeysFromRawSql.js +0 -20
  124. package/dist/TypeOrmConnector/util/isAnyObject.d.ts +0 -1
  125. package/dist/TypeOrmConnector/util/isAnyObject.js +0 -7
  126. package/dist/TypeOrmConnector/util/nestQueryResults.d.ts +0 -2
  127. package/dist/TypeOrmConnector/util/nestQueryResults.js +0 -31
  128. package/dist/cache.d.ts +0 -9
  129. package/dist/cache.js +0 -43
  130. package/dist/core/Loopback/build-schema.d.ts +0 -31
  131. package/dist/core/Loopback/build-schema.js +0 -333
  132. package/dist/core/Loopback/common-types.d.ts +0 -36
  133. package/dist/core/Loopback/common-types.js +0 -13
  134. package/dist/core/Loopback/json-to-schema.d.ts +0 -6
  135. package/dist/core/Loopback/json-to-schema.js +0 -96
  136. package/dist/core/Loopback/mapValues.d.ts +0 -2
  137. package/dist/core/Loopback/mapValues.js +0 -835
  138. package/dist/core/Loopback/metadata.d.ts +0 -9
  139. package/dist/core/Loopback/metadata.js +0 -28
  140. package/dist/core/Loopback/model.d.ts +0 -87
  141. package/dist/core/Loopback/model.js +0 -244
  142. package/dist/core/Loopback/query.d.ts +0 -97
  143. package/dist/core/Loopback/query.js +0 -292
  144. package/dist/core/Loopback/relation.types.d.ts +0 -45
  145. package/dist/core/Loopback/relation.types.js +0 -13
  146. package/dist/core/Loopback/type-resolver.d.ts +0 -7
  147. package/dist/core/Loopback/type-resolver.js +0 -34
  148. package/dist/core/Loopback/type.d.ts +0 -9
  149. package/dist/core/Loopback/type.js +0 -2
  150. package/dist/core/Nestjs/applyDecorators.d.ts +0 -1
  151. package/dist/core/Nestjs/applyDecorators.js +0 -17
  152. package/dist/core/Nestjs/types/common.d.ts +0 -16
  153. package/dist/core/Nestjs/types/common.js +0 -37
  154. package/dist/core/Nestjs/types/decorators/api-hide-property.decorator.d.ts +0 -1
  155. package/dist/core/Nestjs/types/decorators/api-hide-property.decorator.js +0 -7
  156. package/dist/core/Nestjs/types/decorators/api-property.decorator.d.ts +0 -27
  157. package/dist/core/Nestjs/types/decorators/api-property.decorator.js +0 -65
  158. package/dist/core/Nestjs/types/decorators/apply-is-optional.decorator.d.ts +0 -5
  159. package/dist/core/Nestjs/types/decorators/apply-is-optional.decorator.js +0 -131
  160. package/dist/core/Nestjs/types/decorators/args-type.decorator.d.ts +0 -1
  161. package/dist/core/Nestjs/types/decorators/args-type.decorator.js +0 -19
  162. package/dist/core/Nestjs/types/decorators/create-property.decorator.d.ts +0 -2
  163. package/dist/core/Nestjs/types/decorators/create-property.decorator.js +0 -55
  164. package/dist/core/Nestjs/types/decorators/directive.decorator.d.ts +0 -1
  165. package/dist/core/Nestjs/types/decorators/directive.decorator.js +0 -36
  166. package/dist/core/Nestjs/types/decorators/extensions.decorator.d.ts +0 -1
  167. package/dist/core/Nestjs/types/decorators/extensions.decorator.js +0 -25
  168. package/dist/core/Nestjs/types/decorators/field.decorator.d.ts +0 -15
  169. package/dist/core/Nestjs/types/decorators/field.decorator.js +0 -56
  170. package/dist/core/Nestjs/types/decorators/input-type.decorator.d.ts +0 -7
  171. package/dist/core/Nestjs/types/decorators/input-type.decorator.js +0 -23
  172. package/dist/core/Nestjs/types/decorators/interface-type.decorator.d.ts +0 -9
  173. package/dist/core/Nestjs/types/decorators/interface-type.decorator.js +0 -27
  174. package/dist/core/Nestjs/types/decorators/partial-type.helper.d.ts +0 -3
  175. package/dist/core/Nestjs/types/decorators/partial-type.helper.js +0 -42
  176. package/dist/core/Nestjs/types/errors/cannot-determine-host-type.error.d.ts +0 -3
  177. package/dist/core/Nestjs/types/errors/cannot-determine-host-type.error.js +0 -9
  178. package/dist/core/Nestjs/types/errors/directive-parsing.error.d.ts +0 -3
  179. package/dist/core/Nestjs/types/errors/directive-parsing.error.js +0 -9
  180. package/dist/core/Nestjs/types/errors/unable-to-find-fields.error.d.ts +0 -3
  181. package/dist/core/Nestjs/types/errors/unable-to-find-fields.error.js +0 -9
  182. package/dist/core/Nestjs/types/errors/undefined-type.error.d.ts +0 -3
  183. package/dist/core/Nestjs/types/errors/undefined-type.error.js +0 -10
  184. package/dist/core/Nestjs/types/interfaces/add-class-type-metadata.util.d.ts +0 -3
  185. package/dist/core/Nestjs/types/interfaces/add-class-type-metadata.util.js +0 -10
  186. package/dist/core/Nestjs/types/interfaces/base-type-options.interface.d.ts +0 -5
  187. package/dist/core/Nestjs/types/interfaces/base-type-options.interface.js +0 -2
  188. package/dist/core/Nestjs/types/interfaces/class-decorator-factory.interface.d.ts +0 -5
  189. package/dist/core/Nestjs/types/interfaces/class-decorator-factory.interface.js +0 -2
  190. package/dist/core/Nestjs/types/interfaces/complexity.interface.d.ts +0 -11
  191. package/dist/core/Nestjs/types/interfaces/complexity.interface.js +0 -2
  192. package/dist/core/Nestjs/types/interfaces/field-middleware.interface.d.ts +0 -15
  193. package/dist/core/Nestjs/types/interfaces/field-middleware.interface.js +0 -2
  194. package/dist/core/Nestjs/types/interfaces/open-api-spec.interface.d.ts +0 -235
  195. package/dist/core/Nestjs/types/interfaces/open-api-spec.interface.js +0 -2
  196. package/dist/core/Nestjs/types/interfaces/resolve-type-fn.interface.d.ts +0 -2
  197. package/dist/core/Nestjs/types/interfaces/resolve-type-fn.interface.js +0 -2
  198. package/dist/core/Nestjs/types/interfaces/return-type-func.interface.d.ts +0 -5
  199. package/dist/core/Nestjs/types/interfaces/return-type-func.interface.js +0 -2
  200. package/dist/core/Nestjs/types/interfaces/schema-object-metadata.interface.d.ts +0 -9
  201. package/dist/core/Nestjs/types/interfaces/schema-object-metadata.interface.js +0 -2
  202. package/dist/core/Nestjs/types/interfaces/type-options.interface.d.ts +0 -5
  203. package/dist/core/Nestjs/types/interfaces/type-options.interface.js +0 -2
  204. package/dist/core/Nestjs/types/lazy-metadata.storage.d.ts +0 -15
  205. package/dist/core/Nestjs/types/lazy-metadata.storage.js +0 -67
  206. package/dist/core/Nestjs/types/metadata/class.metadata.d.ts +0 -11
  207. package/dist/core/Nestjs/types/metadata/class.metadata.js +0 -2
  208. package/dist/core/Nestjs/types/metadata/directive.metadata.d.ts +0 -8
  209. package/dist/core/Nestjs/types/metadata/directive.metadata.js +0 -2
  210. package/dist/core/Nestjs/types/metadata/enum.metadata.d.ts +0 -11
  211. package/dist/core/Nestjs/types/metadata/enum.metadata.js +0 -2
  212. package/dist/core/Nestjs/types/metadata/extensions.metadata.d.ts +0 -8
  213. package/dist/core/Nestjs/types/metadata/extensions.metadata.js +0 -2
  214. package/dist/core/Nestjs/types/metadata/index.d.ts +0 -8
  215. package/dist/core/Nestjs/types/metadata/index.js +0 -11
  216. package/dist/core/Nestjs/types/metadata/interface.metadata.d.ts +0 -6
  217. package/dist/core/Nestjs/types/metadata/interface.metadata.js +0 -2
  218. package/dist/core/Nestjs/types/metadata/object-type.metadata.d.ts +0 -4
  219. package/dist/core/Nestjs/types/metadata/object-type.metadata.js +0 -2
  220. package/dist/core/Nestjs/types/metadata/param.metadata.d.ts +0 -18
  221. package/dist/core/Nestjs/types/metadata/param.metadata.js +0 -2
  222. package/dist/core/Nestjs/types/metadata/property.metadata.d.ts +0 -20
  223. package/dist/core/Nestjs/types/metadata/property.metadata.js +0 -2
  224. package/dist/core/Nestjs/types/metadata/resolver.metadata.d.ts +0 -34
  225. package/dist/core/Nestjs/types/metadata/resolver.metadata.js +0 -2
  226. package/dist/core/Nestjs/types/metadata/union.metadata.d.ts +0 -9
  227. package/dist/core/Nestjs/types/metadata/union.metadata.js +0 -2
  228. package/dist/core/Nestjs/types/object-type.decorator.d.ts +0 -8
  229. package/dist/core/Nestjs/types/object-type.decorator.js +0 -25
  230. package/dist/core/Nestjs/types/omit-type.d.ts +0 -2
  231. package/dist/core/Nestjs/types/omit-type.js +0 -34
  232. package/dist/core/Nestjs/types/reflection.utils.d.ts +0 -15
  233. package/dist/core/Nestjs/types/reflection.utils.js +0 -65
  234. package/dist/core/Nestjs/types/set-metadata.decorator.d.ts +0 -4
  235. package/dist/core/Nestjs/types/set-metadata.decorator.js +0 -16
  236. package/dist/core/Nestjs/types/type-metadata.storage.d.ts +0 -69
  237. package/dist/core/Nestjs/types/type-metadata.storage.js +0 -342
  238. package/dist/core/Nestjs/types/utils/enum.utils.d.ts +0 -3
  239. package/dist/core/Nestjs/types/utils/enum.utils.js +0 -29
  240. package/dist/core/Nestjs/types/utils/get-fields-and-decorator.util.d.ts +0 -3
  241. package/dist/core/Nestjs/types/utils/get-fields-and-decorator.util.js +0 -72
  242. package/dist/core/Nestjs/types/utils/mapped-types.utils.d.ts +0 -2
  243. package/dist/core/Nestjs/types/utils/mapped-types.utils.js +0 -38
  244. package/dist/core/Nestjs/types/utils/model-properties-accessor.d.ts +0 -6
  245. package/dist/core/Nestjs/types/utils/model-properties-accessor.js +0 -36
  246. package/dist/core/Nestjs/types/utils/type-helpers.utils.d.ts +0 -2
  247. package/dist/core/Nestjs/types/utils/type-helpers.utils.js +0 -16
  248. package/dist/core/types.d.ts +0 -23
  249. package/dist/core/types.js +0 -29
  250. package/dist/decorators.d.ts +0 -47
  251. package/dist/decorators.js +0 -104
  252. package/dist/generatorDatasource.d.ts +0 -2
  253. package/dist/generatorDatasource.js +0 -12
  254. package/dist/index.d.ts +0 -30
  255. package/dist/index.js +0 -49
  256. package/dist/loadRelations.d.ts +0 -12
  257. package/dist/loadRelations.js +0 -133
  258. package/dist/outputKeys.d.ts +0 -2
  259. package/dist/outputKeys.js +0 -17
  260. package/dist/tsconfig.tsbuildinfo +0 -1
  261. package/dist/types.d.ts +0 -141
  262. package/dist/types.js +0 -22
@@ -1,36 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ModelPropertiesAccessor = void 0;
4
- const common_1 = require("../common");
5
- require("reflect-metadata");
6
- const api_property_decorator_1 = require("../decorators/api-property.decorator");
7
- const type_metadata_storage_1 = require("../type-metadata.storage");
8
- class ModelPropertiesAccessor {
9
- getModelProperties(prototype) {
10
- const properties = Reflect.getMetadata(api_property_decorator_1.DECORATORS.API_MODEL_PROPERTIES_ARRAY, prototype) ||
11
- [];
12
- return properties
13
- .filter(common_1.isString)
14
- .filter((key) => key.charAt(0) === ':' && !(0, common_1.isFunction)(prototype[key]))
15
- .map((key) => key.slice(1));
16
- }
17
- applyMetadataFactory(prototype) {
18
- const classPrototype = prototype;
19
- do {
20
- if (!prototype.constructor) {
21
- return;
22
- }
23
- if (!prototype.constructor[type_metadata_storage_1.METADATA_FACTORY_NAME]) {
24
- continue;
25
- }
26
- const metadata = prototype.constructor[type_metadata_storage_1.METADATA_FACTORY_NAME]();
27
- const properties = Object.keys(metadata);
28
- properties.forEach(key => {
29
- (0, api_property_decorator_1.createApiPropertyDecorator)(metadata[key], false)(classPrototype, key);
30
- });
31
- } while ((prototype = Reflect.getPrototypeOf(prototype)) &&
32
- prototype !== Object.prototype &&
33
- prototype);
34
- }
35
- }
36
- exports.ModelPropertiesAccessor = ModelPropertiesAccessor;
@@ -1,2 +0,0 @@
1
- import { PropertyMetadata } from '../metadata';
2
- export declare function applyFieldDecorators(targetClass: Function, item: PropertyMetadata): void;
@@ -1,16 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.applyFieldDecorators = void 0;
4
- const directive_decorator_1 = require("../decorators/directive.decorator");
5
- const extensions_decorator_1 = require("../decorators/extensions.decorator");
6
- function applyFieldDecorators(targetClass, item) {
7
- if (item.extensions) {
8
- (0, extensions_decorator_1.Extensions)(item.extensions)(targetClass.prototype, item.name);
9
- }
10
- if (item.directives?.length) {
11
- item.directives.map(directive => {
12
- (0, directive_decorator_1.Directive)(directive.sdl)(targetClass.prototype, item.name);
13
- });
14
- }
15
- }
16
- exports.applyFieldDecorators = applyFieldDecorators;
@@ -1,23 +0,0 @@
1
- import { Column as TypeORMColumn } from 'typeorm';
2
- import { SchemaObject as LBSchemaObject } from 'openapi3-ts';
3
- import { InputType as NestInputType } from './Nestjs/types/decorators/input-type.decorator';
4
- import { PartialType as NestjsPartialType } from './Nestjs/types/decorators/partial-type.helper';
5
- import { ObjectType as NestObjectType } from './Nestjs/types/object-type.decorator';
6
- import { ApiProperty as NEstJSApiProperty } from './Nestjs/types/decorators/api-property.decorator';
7
- import { OmitType as NEstJSOmitType } from './Nestjs/types/omit-type';
8
- import { ApiHideProperty as NEstApiHideProperty } from './Nestjs/types/decorators/api-hide-property.decorator';
9
- import { SchemaRef } from './Loopback/json-to-schema';
10
- import { JsonSchemaOptions } from './Loopback/build-schema';
11
- export declare function LBgetModelSchemaRef<T extends object>(modelCtor: Function & {
12
- prototype: T;
13
- }, options?: JsonSchemaOptions<T>): SchemaRef;
14
- export declare const ApiProperty: typeof NEstJSApiProperty;
15
- export declare const ApiHideProperty: typeof NEstApiHideProperty;
16
- export declare const OmitType: typeof NEstJSOmitType;
17
- export declare const InputType: typeof NestInputType;
18
- export declare const PartialType: typeof NestjsPartialType;
19
- export declare const Column: typeof TypeORMColumn;
20
- export declare const getModelSchemaRef: typeof LBgetModelSchemaRef;
21
- export declare const ObjectType: typeof NestObjectType;
22
- export declare type SchemaObject = LBSchemaObject;
23
- export declare function HideField(): PropertyDecorator;
@@ -1,29 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.HideField = exports.ObjectType = exports.getModelSchemaRef = exports.Column = exports.PartialType = exports.InputType = exports.OmitType = exports.ApiHideProperty = exports.ApiProperty = exports.LBgetModelSchemaRef = void 0;
4
- const typeorm_1 = require("typeorm");
5
- const input_type_decorator_1 = require("./Nestjs/types/decorators/input-type.decorator");
6
- const partial_type_helper_1 = require("./Nestjs/types/decorators/partial-type.helper");
7
- const object_type_decorator_1 = require("./Nestjs/types/object-type.decorator");
8
- const api_property_decorator_1 = require("./Nestjs/types/decorators/api-property.decorator");
9
- const omit_type_1 = require("./Nestjs/types/omit-type");
10
- const api_hide_property_decorator_1 = require("./Nestjs/types/decorators/api-hide-property.decorator");
11
- const json_to_schema_1 = require("./Loopback/json-to-schema");
12
- const build_schema_1 = require("./Loopback/build-schema");
13
- function LBgetModelSchemaRef(modelCtor, options) {
14
- const jsonSchema = (0, build_schema_1.getJsonSchemaRef)(modelCtor, options);
15
- return (0, json_to_schema_1.jsonToSchemaObject)(jsonSchema);
16
- }
17
- exports.LBgetModelSchemaRef = LBgetModelSchemaRef;
18
- exports.ApiProperty = api_property_decorator_1.ApiProperty;
19
- exports.ApiHideProperty = api_hide_property_decorator_1.ApiHideProperty;
20
- exports.OmitType = omit_type_1.OmitType;
21
- exports.InputType = input_type_decorator_1.InputType;
22
- exports.PartialType = partial_type_helper_1.PartialType;
23
- exports.Column = typeorm_1.Column;
24
- exports.getModelSchemaRef = LBgetModelSchemaRef;
25
- exports.ObjectType = object_type_decorator_1.ObjectType;
26
- function HideField() {
27
- return (target, propertyKey) => { };
28
- }
29
- exports.HideField = HideField;
@@ -1,47 +0,0 @@
1
- import { ColumnType } from 'typeorm';
2
- import { Primitives } from './types';
3
- interface PropertyInterface {
4
- required?: boolean;
5
- unique?: boolean;
6
- hidden?: boolean;
7
- type?: ColumnType;
8
- }
9
- interface EnumProperty {
10
- enum: any[];
11
- default?: Primitives;
12
- }
13
- export declare type DbEntity<T> = new () => T;
14
- interface ManyToManyInterface<T> {
15
- entity: (type?: any) => DbEntity<T>;
16
- joinTableName: string;
17
- foreignKey: string;
18
- inverseForeignKey: string;
19
- }
20
- interface BelongsToInterface<T> {
21
- entity: (type?: any) => DbEntity<T>;
22
- inverse: string | ((object: T) => any);
23
- pivotColumnName?: string;
24
- }
25
- interface hasManyInterface<T> {
26
- entity: (type?: any) => DbEntity<T>;
27
- inverse: string | ((object: T) => any);
28
- }
29
- export declare class DecoratorsClass {
30
- id(): PropertyDecorator;
31
- mongoId(): PropertyDecorator;
32
- entity(name: string): ClassDecorator;
33
- property(params?: PropertyInterface): PropertyDecorator;
34
- embed(e: any): PropertyDecorator;
35
- embedArray(e: any, params?: PropertyInterface): PropertyDecorator;
36
- stringArray(e: any, params?: PropertyInterface): PropertyDecorator;
37
- Enum(e: EnumProperty, params?: PropertyInterface): PropertyDecorator;
38
- created(e?: any): PropertyDecorator;
39
- updated(e?: any): PropertyDecorator;
40
- deleted(e?: any): PropertyDecorator;
41
- version(e?: any): PropertyDecorator;
42
- belongsToMany<T>({ entity, joinTableName, foreignKey, inverseForeignKey }: ManyToManyInterface<T>): PropertyDecorator;
43
- belongsTo<T>({ entity, inverse, pivotColumnName }: BelongsToInterface<T>): PropertyDecorator;
44
- hasMany<T>({ entity, inverse }: hasManyInterface<T>): PropertyDecorator;
45
- }
46
- export declare const f: DecoratorsClass;
47
- export {};
@@ -1,104 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.f = exports.DecoratorsClass = void 0;
4
- const typeorm_1 = require("typeorm");
5
- const graphql_1 = require("graphql");
6
- const types_1 = require("./core/types");
7
- const applyDecorators_1 = require("./core/Nestjs/applyDecorators");
8
- const field_decorator_1 = require("./core/Nestjs/types/decorators/field.decorator");
9
- const js_utils_1 = require("@goatlab/js-utils");
10
- class DecoratorsClass {
11
- id() {
12
- return (0, applyDecorators_1.applyDecorators)((0, typeorm_1.ObjectIdColumn)({ type: 'uuid' }), (0, typeorm_1.PrimaryGeneratedColumn)('uuid'), (0, types_1.ApiProperty)(), (0, field_decorator_1.Field)(() => graphql_1.GraphQLID));
13
- }
14
- mongoId() {
15
- return (0, applyDecorators_1.applyDecorators)((0, typeorm_1.ObjectIdColumn)(), (0, types_1.ApiProperty)(), (0, field_decorator_1.Field)(() => graphql_1.GraphQLID));
16
- }
17
- entity(name) {
18
- const PascalCase = name;
19
- return (0, applyDecorators_1.applyDecorators)((0, typeorm_1.Entity)({ name: PascalCase }), (0, types_1.ObjectType)());
20
- }
21
- property(params) {
22
- if (params && params.hidden) {
23
- return (0, applyDecorators_1.applyDecorators)((0, types_1.HideField)(), (0, typeorm_1.Column)({
24
- select: false,
25
- nullable: !params.required,
26
- type: params.type
27
- }), (0, types_1.ApiProperty)({
28
- nullable: !params.required,
29
- required: !!params.required
30
- }), (0, types_1.ApiHideProperty)());
31
- }
32
- return (0, applyDecorators_1.applyDecorators)((0, typeorm_1.Column)({
33
- nullable: !params?.required
34
- }), (0, types_1.ApiProperty)({
35
- nullable: !params?.required,
36
- required: !!params?.required
37
- }), (0, field_decorator_1.Field)());
38
- }
39
- embed(e) {
40
- return (0, applyDecorators_1.applyDecorators)((0, typeorm_1.Column)(type => e), (0, types_1.ApiProperty)({ type: e }));
41
- }
42
- embedArray(e, params) {
43
- return (0, applyDecorators_1.applyDecorators)((0, typeorm_1.Column)(type => e), (0, types_1.ApiProperty)({
44
- isArray: true,
45
- type: e,
46
- nullable: !params?.required,
47
- required: !!params?.required
48
- }));
49
- }
50
- stringArray(e, params) {
51
- return (0, applyDecorators_1.applyDecorators)((0, typeorm_1.Column)({
52
- type: 'simple-array',
53
- nullable: !params?.required
54
- }), (0, types_1.ApiProperty)({
55
- type: [e],
56
- nullable: !params?.required,
57
- required: !!params?.required
58
- }));
59
- }
60
- Enum(e, params) {
61
- return (0, applyDecorators_1.applyDecorators)((0, typeorm_1.Column)({
62
- type: 'enum',
63
- enum: e.enum,
64
- default: e.default,
65
- nullable: !params?.required
66
- }), (0, types_1.ApiProperty)({
67
- enum: e.enum,
68
- default: e.default,
69
- nullable: !params?.required,
70
- required: !!params?.required
71
- }));
72
- }
73
- created(e) {
74
- return (0, applyDecorators_1.applyDecorators)((0, typeorm_1.CreateDateColumn)(), (0, types_1.ApiProperty)());
75
- }
76
- updated(e) {
77
- return (0, applyDecorators_1.applyDecorators)((0, typeorm_1.UpdateDateColumn)(), (0, types_1.ApiProperty)());
78
- }
79
- deleted(e) {
80
- return (0, applyDecorators_1.applyDecorators)((0, typeorm_1.DeleteDateColumn)(), (0, types_1.ApiProperty)());
81
- }
82
- version(e) {
83
- return (0, applyDecorators_1.applyDecorators)((0, typeorm_1.VersionColumn)(), (0, types_1.ApiProperty)());
84
- }
85
- belongsToMany({ entity, joinTableName, foreignKey, inverseForeignKey }) {
86
- return (0, applyDecorators_1.applyDecorators)((0, typeorm_1.ManyToMany)(entity), (0, typeorm_1.JoinTable)({
87
- name: joinTableName,
88
- joinColumns: [{ name: foreignKey }],
89
- inverseJoinColumns: [{ name: inverseForeignKey }]
90
- }));
91
- }
92
- belongsTo({ entity, inverse, pivotColumnName }) {
93
- return (0, applyDecorators_1.applyDecorators)((0, typeorm_1.ManyToOne)(entity, inverse), (0, typeorm_1.JoinColumn)({
94
- name: pivotColumnName,
95
- referencedColumnName: 'id',
96
- foreignKeyConstraintName: `${pivotColumnName}_id_${js_utils_1.Ids.nanoId()}`
97
- }));
98
- }
99
- hasMany({ entity, inverse }) {
100
- return (0, applyDecorators_1.applyDecorators)((0, typeorm_1.OneToMany)(entity, inverse));
101
- }
102
- }
103
- exports.DecoratorsClass = DecoratorsClass;
104
- exports.f = new DecoratorsClass();
@@ -1,2 +0,0 @@
1
- import { DataSource } from 'typeorm';
2
- export declare const modelGeneratorDataSource: DataSource;
@@ -1,12 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.modelGeneratorDataSource = void 0;
4
- const typeorm_1 = require("typeorm");
5
- exports.modelGeneratorDataSource = new typeorm_1.DataSource({
6
- name: '_goat_model_generator',
7
- type: 'sqlite',
8
- database: ':memory:',
9
- logging: false,
10
- synchronize: true,
11
- dropSchema: true
12
- });
package/dist/index.d.ts DELETED
@@ -1,30 +0,0 @@
1
- import { ApiHideProperty, ApiProperty, Column, HideField, InputType, ObjectType, OmitType, PartialType, getModelSchemaRef } from './core/types';
2
- import type { AnyObject, Deleted, PaginatedData, Paginator, Primitives, PrimitivesArray, FluentQuery, QueryOutput, LoadedResult, FindByIdFilter } from './types';
3
- import { LogicOperator } from './types';
4
- import { BaseConnector } from './BaseConnector';
5
- import { Collection } from '@goatlab/js-utils';
6
- import { f } from './decorators';
7
- import { Fluent } from './Fluent';
8
- import type { FluentConnectorInterface } from './FluentConnectorInterface';
9
- import type { SchemaObject } from './core/types';
10
- import { TypeOrmConnector } from './TypeOrmConnector/TypeOrmConnector';
11
- import { getOutputKeys } from './outputKeys';
12
- import { loadRelations } from './loadRelations';
13
- import { modelGeneratorDataSource } from './generatorDatasource';
14
- import { Cache } from './cache';
15
- import { ValidationError } from 'class-validator';
16
- import { extractConditions } from './TypeOrmConnector/util/extractConditions';
17
- import { extractInclude } from './TypeOrmConnector/util/extractInclude';
18
- import { extractMetadataFromKeys } from './TypeOrmConnector/util/extractMetadataFromKeys';
19
- import { extractOrderBy } from './TypeOrmConnector/util/extractOrderBy';
20
- import { getRelationsFromModelGenerator } from './TypeOrmConnector/util/getRelationsFromModelGenerator';
21
- import { getSelectedKeysFromRawSql } from './TypeOrmConnector/util/getSelectedKeysFromRawSql';
22
- import { nestQueryResults } from './TypeOrmConnector/util/nestQueryResults';
23
- export { DataSource } from 'typeorm';
24
- export type { Relation } from 'typeorm';
25
- export { ApiHideProperty, ApiProperty, BaseConnector, Collection, Column, f, Fluent, getModelSchemaRef, getOutputKeys, HideField, InputType, loadRelations, modelGeneratorDataSource, ObjectType, OmitType, PartialType, TypeOrmConnector, Cache, getRelationsFromModelGenerator, LogicOperator, extractConditions, extractInclude, extractMetadataFromKeys, extractOrderBy, getSelectedKeysFromRawSql, nestQueryResults };
26
- interface ValidatedInput<T> {
27
- errors: ValidationError[] | null;
28
- result: Awaited<T>;
29
- }
30
- export type { AnyObject, Deleted, FluentConnectorInterface, PaginatedData, Paginator, Primitives, PrimitivesArray, SchemaObject, ValidatedInput, FluentQuery, QueryOutput, LoadedResult, FindByIdFilter };
package/dist/index.js DELETED
@@ -1,49 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.nestQueryResults = exports.getSelectedKeysFromRawSql = exports.extractOrderBy = exports.extractMetadataFromKeys = exports.extractInclude = exports.extractConditions = exports.LogicOperator = exports.getRelationsFromModelGenerator = exports.Cache = exports.TypeOrmConnector = exports.PartialType = exports.OmitType = exports.ObjectType = exports.modelGeneratorDataSource = exports.loadRelations = exports.InputType = exports.HideField = exports.getOutputKeys = exports.getModelSchemaRef = exports.Fluent = exports.f = exports.Column = exports.Collection = exports.BaseConnector = exports.ApiProperty = exports.ApiHideProperty = exports.DataSource = void 0;
4
- const types_1 = require("./core/types");
5
- Object.defineProperty(exports, "ApiHideProperty", { enumerable: true, get: function () { return types_1.ApiHideProperty; } });
6
- Object.defineProperty(exports, "ApiProperty", { enumerable: true, get: function () { return types_1.ApiProperty; } });
7
- Object.defineProperty(exports, "Column", { enumerable: true, get: function () { return types_1.Column; } });
8
- Object.defineProperty(exports, "HideField", { enumerable: true, get: function () { return types_1.HideField; } });
9
- Object.defineProperty(exports, "InputType", { enumerable: true, get: function () { return types_1.InputType; } });
10
- Object.defineProperty(exports, "ObjectType", { enumerable: true, get: function () { return types_1.ObjectType; } });
11
- Object.defineProperty(exports, "OmitType", { enumerable: true, get: function () { return types_1.OmitType; } });
12
- Object.defineProperty(exports, "PartialType", { enumerable: true, get: function () { return types_1.PartialType; } });
13
- Object.defineProperty(exports, "getModelSchemaRef", { enumerable: true, get: function () { return types_1.getModelSchemaRef; } });
14
- const types_2 = require("./types");
15
- Object.defineProperty(exports, "LogicOperator", { enumerable: true, get: function () { return types_2.LogicOperator; } });
16
- const BaseConnector_1 = require("./BaseConnector");
17
- Object.defineProperty(exports, "BaseConnector", { enumerable: true, get: function () { return BaseConnector_1.BaseConnector; } });
18
- const js_utils_1 = require("@goatlab/js-utils");
19
- Object.defineProperty(exports, "Collection", { enumerable: true, get: function () { return js_utils_1.Collection; } });
20
- const decorators_1 = require("./decorators");
21
- Object.defineProperty(exports, "f", { enumerable: true, get: function () { return decorators_1.f; } });
22
- const Fluent_1 = require("./Fluent");
23
- Object.defineProperty(exports, "Fluent", { enumerable: true, get: function () { return Fluent_1.Fluent; } });
24
- const TypeOrmConnector_1 = require("./TypeOrmConnector/TypeOrmConnector");
25
- Object.defineProperty(exports, "TypeOrmConnector", { enumerable: true, get: function () { return TypeOrmConnector_1.TypeOrmConnector; } });
26
- const outputKeys_1 = require("./outputKeys");
27
- Object.defineProperty(exports, "getOutputKeys", { enumerable: true, get: function () { return outputKeys_1.getOutputKeys; } });
28
- const loadRelations_1 = require("./loadRelations");
29
- Object.defineProperty(exports, "loadRelations", { enumerable: true, get: function () { return loadRelations_1.loadRelations; } });
30
- const generatorDatasource_1 = require("./generatorDatasource");
31
- Object.defineProperty(exports, "modelGeneratorDataSource", { enumerable: true, get: function () { return generatorDatasource_1.modelGeneratorDataSource; } });
32
- const cache_1 = require("./cache");
33
- Object.defineProperty(exports, "Cache", { enumerable: true, get: function () { return cache_1.Cache; } });
34
- const extractConditions_1 = require("./TypeOrmConnector/util/extractConditions");
35
- Object.defineProperty(exports, "extractConditions", { enumerable: true, get: function () { return extractConditions_1.extractConditions; } });
36
- const extractInclude_1 = require("./TypeOrmConnector/util/extractInclude");
37
- Object.defineProperty(exports, "extractInclude", { enumerable: true, get: function () { return extractInclude_1.extractInclude; } });
38
- const extractMetadataFromKeys_1 = require("./TypeOrmConnector/util/extractMetadataFromKeys");
39
- Object.defineProperty(exports, "extractMetadataFromKeys", { enumerable: true, get: function () { return extractMetadataFromKeys_1.extractMetadataFromKeys; } });
40
- const extractOrderBy_1 = require("./TypeOrmConnector/util/extractOrderBy");
41
- Object.defineProperty(exports, "extractOrderBy", { enumerable: true, get: function () { return extractOrderBy_1.extractOrderBy; } });
42
- const getRelationsFromModelGenerator_1 = require("./TypeOrmConnector/util/getRelationsFromModelGenerator");
43
- Object.defineProperty(exports, "getRelationsFromModelGenerator", { enumerable: true, get: function () { return getRelationsFromModelGenerator_1.getRelationsFromModelGenerator; } });
44
- const getSelectedKeysFromRawSql_1 = require("./TypeOrmConnector/util/getSelectedKeysFromRawSql");
45
- Object.defineProperty(exports, "getSelectedKeysFromRawSql", { enumerable: true, get: function () { return getSelectedKeysFromRawSql_1.getSelectedKeysFromRawSql; } });
46
- const nestQueryResults_1 = require("./TypeOrmConnector/util/nestQueryResults");
47
- Object.defineProperty(exports, "nestQueryResults", { enumerable: true, get: function () { return nestQueryResults_1.nestQueryResults; } });
48
- var typeorm_1 = require("typeorm");
49
- Object.defineProperty(exports, "DataSource", { enumerable: true, get: function () { return typeorm_1.DataSource; } });
@@ -1,12 +0,0 @@
1
- import { DataSource } from 'typeorm';
2
- interface RelationshipLoader {
3
- data: any[];
4
- relations: any;
5
- modelRelations: any;
6
- dataSource?: DataSource;
7
- provider?: 'typeorm' | 'firebase';
8
- self: any;
9
- returnPivot?: boolean;
10
- }
11
- export declare const loadRelations: ({ data, relations, modelRelations, provider, self, returnPivot }: RelationshipLoader) => Promise<any[]>;
12
- export {};
@@ -1,133 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.loadRelations = void 0;
4
- const js_utils_1 = require("@goatlab/js-utils");
5
- const loadRelations = async ({ data, relations, modelRelations, provider, self, returnPivot }) => {
6
- if (!relations) {
7
- return data;
8
- }
9
- const chunkSize = provider === 'typeorm' ? 100 : 10;
10
- for (const relation of Object.keys(relations)) {
11
- if (!modelRelations[relation]) {
12
- throw new Error(`Relationship does not exist: ${relation}. Did you create it in your DB entity?`);
13
- }
14
- if (!self[relation]) {
15
- throw new Error(`Relationship does not exist: ${relation}. Did you create it in your Repository?`);
16
- }
17
- const relationModel = modelRelations[relation];
18
- const Repository = self[relation]();
19
- if (relationModel.isOneToMany) {
20
- const ids = new Set(data.map(d => d.id));
21
- const chunks = js_utils_1.Arrays.chunk(Array.from(ids), chunkSize);
22
- const promises = [];
23
- for (const relatedIds of chunks) {
24
- promises.push(Repository.findMany({
25
- where: {
26
- [relationModel.inverseSidePropertyPath]: {
27
- in: relatedIds
28
- }
29
- }
30
- }));
31
- }
32
- const relatedResults = js_utils_1.Arrays.collapse(await Promise.all(promises));
33
- const grouped = js_utils_1.Arrays.groupBy(relatedResults, r => r[relationModel.inverseSidePropertyPath]);
34
- data.map(d => {
35
- if (grouped[d.id]) {
36
- d[relationModel.propertyName] = grouped[d.id];
37
- }
38
- return d;
39
- });
40
- return data;
41
- }
42
- if (relationModel.isManyToOne) {
43
- const ids = js_utils_1.Arrays.deDuplicate(data.map(d => d[relationModel.joinColumns[0].propertyPath]));
44
- const chunks = js_utils_1.Arrays.chunk(ids, chunkSize);
45
- const promises = [];
46
- for (const relatedIds of chunks) {
47
- promises.push(Repository.findMany({
48
- where: {
49
- id: {
50
- in: relatedIds
51
- }
52
- }
53
- }));
54
- }
55
- const relatedResults = js_utils_1.Arrays.collapse(await Promise.all(promises));
56
- const grouped = js_utils_1.Arrays.groupBy(relatedResults, r => r.id);
57
- data.map(d => {
58
- if (grouped[d[relationModel.joinColumns[0].propertyPath]]) {
59
- d[relationModel.propertyName] =
60
- grouped[d[relationModel.joinColumns[0].propertyPath]][0];
61
- }
62
- });
63
- return data;
64
- }
65
- if (relationModel.isManyToMany) {
66
- const ids = js_utils_1.Arrays.deDuplicate(data.map(d => d.id));
67
- const chunks = js_utils_1.Arrays.chunk(ids, chunkSize);
68
- if (relationModel.joinColumns.length === 0) {
69
- return data;
70
- }
71
- const pivotForeignField = self.modelRelations[relationModel.propertyName].joinColumns[0]
72
- .propertyPath;
73
- const inverseForeignField = self.modelRelations[relationModel.propertyName].inverseJoinColumns[0]
74
- .propertyPath;
75
- const pivotRepository = Repository?.relatedQuery.pivot;
76
- const calleeKey = Repository?.relatedQuery.key;
77
- if (!pivotForeignField ||
78
- !inverseForeignField ||
79
- !pivotRepository ||
80
- !calleeKey) {
81
- throw new Error('The Many-to-Many relationship is not properly defined.Please check both your Model and Repository');
82
- }
83
- const promises = [];
84
- for (const pivotIds of chunks) {
85
- const results = await pivotRepository.findMany({
86
- where: {
87
- [pivotForeignField]: {
88
- in: pivotIds
89
- }
90
- }
91
- });
92
- promises.push(results);
93
- }
94
- const pivotResults = js_utils_1.Arrays.collapse(await Promise.all(promises));
95
- const uniquePivotIds = pivotResults.map(p => p[inverseForeignField]);
96
- const relationChunks = js_utils_1.Arrays.chunk(uniquePivotIds, chunkSize);
97
- const relationPromises = [];
98
- for (const relatedIds of relationChunks) {
99
- const results = await Repository.findMany({
100
- where: {
101
- id: {
102
- in: relatedIds
103
- }
104
- }
105
- });
106
- relationPromises.push(results);
107
- }
108
- let relatedResults = js_utils_1.Arrays.collapse(await Promise.all(relationPromises));
109
- relatedResults = relatedResults.map(r => {
110
- return {
111
- ...r,
112
- pivot: pivotResults.find(p => p[inverseForeignField] === r.id)
113
- };
114
- });
115
- const groupedPivot = js_utils_1.Arrays.groupBy(pivotResults, r => r[relationModel.joinColumns[0].propertyName]);
116
- const groupedRelated = js_utils_1.Arrays.groupBy(relatedResults, r => r.id);
117
- data.map(d => {
118
- groupedPivot[d.id]?.forEach(gp => {
119
- if (!d[calleeKey]) {
120
- d[calleeKey] = [];
121
- }
122
- const mapped = groupedRelated[gp[relationModel.inverseJoinColumns[0].propertyName]];
123
- if (mapped) {
124
- d[calleeKey] = [...d[calleeKey], ...mapped];
125
- }
126
- });
127
- });
128
- return data;
129
- }
130
- }
131
- return data;
132
- };
133
- exports.loadRelations = loadRelations;
@@ -1,2 +0,0 @@
1
- import { Repository } from 'typeorm';
2
- export declare const getOutputKeys: (repository: Repository<any>) => string[];
@@ -1,17 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getOutputKeys = void 0;
4
- const js_utils_1 = require("@goatlab/js-utils");
5
- const getOutputKeys = (repository) => {
6
- const excludedCols = [];
7
- repository.metadata.columns.forEach(c => {
8
- if (!c.isSelect) {
9
- excludedCols.push(c.propertyName);
10
- }
11
- });
12
- const keys = repository.metadata.propertiesMap;
13
- const flatKeys = js_utils_1.Objects.flatten(keys, true);
14
- const outputKeys = Object.keys(flatKeys).filter(e => !excludedCols.includes(e));
15
- return outputKeys;
16
- };
17
- exports.getOutputKeys = getOutputKeys;