@goatlab/fluent 0.7.21 → 0.7.24

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 (260) hide show
  1. package/dist/BaseConnector.d.ts +43 -0
  2. package/dist/BaseConnector.js +258 -0
  3. package/dist/Fluent.d.ts +7 -0
  4. package/dist/Fluent.js +22 -0
  5. package/dist/FluentConnectorInterface.d.ts +17 -0
  6. package/dist/FluentConnectorInterface.js +2 -0
  7. package/dist/FluentEntity.d.ts +7 -0
  8. package/dist/FluentEntity.js +28 -0
  9. package/dist/TypeOrmConnector/TypeOrmConnector.d.ts +38 -0
  10. package/dist/TypeOrmConnector/TypeOrmConnector.js +370 -0
  11. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoBaseAggregations.d.ts +7 -0
  12. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoBaseAggregations.js +148 -0
  13. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoFindAggregatedQuery.d.ts +6 -0
  14. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoFindAggregatedQuery.js +45 -0
  15. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoOrderBy.d.ts +4 -0
  16. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoOrderBy.js +19 -0
  17. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoSelect.d.ts +4 -0
  18. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoSelect.js +12 -0
  19. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoWhere.d.ts +6 -0
  20. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoWhere.js +166 -0
  21. package/dist/TypeOrmConnector/queryBuilder/sql/getQueryBuilderWhere.d.ts +8 -0
  22. package/dist/TypeOrmConnector/queryBuilder/sql/getQueryBuilderWhere.js +200 -0
  23. package/dist/TypeOrmConnector/queryBuilder/sql/getTypeOrmWhere.d.ts +6 -0
  24. package/dist/TypeOrmConnector/queryBuilder/sql/getTypeOrmWhere.js +207 -0
  25. package/dist/TypeOrmConnector/test/advanced/advancedTestSuite.d.ts +1 -0
  26. package/dist/TypeOrmConnector/test/advanced/advancedTestSuite.js +256 -0
  27. package/dist/TypeOrmConnector/test/advanced/typeOrm.entity.d.ts +116 -0
  28. package/dist/TypeOrmConnector/test/advanced/typeOrm.entity.js +74 -0
  29. package/dist/TypeOrmConnector/test/advanced/typeOrm.mongo.repository.d.ts +5 -0
  30. package/dist/TypeOrmConnector/test/advanced/typeOrm.mongo.repository.js +17 -0
  31. package/dist/TypeOrmConnector/test/advanced/typeOrm.mysql.repository.d.ts +5 -0
  32. package/dist/TypeOrmConnector/test/advanced/typeOrm.mysql.repository.js +17 -0
  33. package/dist/TypeOrmConnector/test/advanced/typeOrm.repository.d.ts +5 -0
  34. package/dist/TypeOrmConnector/test/advanced/typeOrm.repository.js +17 -0
  35. package/dist/TypeOrmConnector/test/basic/basicTestSuite.d.ts +1 -0
  36. package/dist/TypeOrmConnector/test/basic/basicTestSuite.js +193 -0
  37. package/dist/TypeOrmConnector/test/basic/goat.entity.d.ts +53 -0
  38. package/dist/TypeOrmConnector/test/basic/goat.entity.js +53 -0
  39. package/dist/TypeOrmConnector/test/basic/goat.mongo.repository.d.ts +5 -0
  40. package/dist/TypeOrmConnector/test/basic/goat.mongo.repository.js +16 -0
  41. package/dist/TypeOrmConnector/test/basic/goat.mysql.repository.d.ts +5 -0
  42. package/dist/TypeOrmConnector/test/basic/goat.mysql.repository.js +16 -0
  43. package/dist/TypeOrmConnector/test/basic/goat.repository.d.ts +5 -0
  44. package/dist/TypeOrmConnector/test/basic/goat.repository.js +16 -0
  45. package/dist/TypeOrmConnector/test/dbEntities.d.ts +6 -0
  46. package/dist/TypeOrmConnector/test/dbEntities.js +17 -0
  47. package/dist/TypeOrmConnector/test/docker/docker.d.ts +35 -0
  48. package/dist/TypeOrmConnector/test/docker/docker.js +148 -0
  49. package/dist/TypeOrmConnector/test/docker/mongo.d.ts +16 -0
  50. package/dist/TypeOrmConnector/test/docker/mongo.js +93 -0
  51. package/dist/TypeOrmConnector/test/docker/mysql.d.ts +17 -0
  52. package/dist/TypeOrmConnector/test/docker/mysql.js +132 -0
  53. package/dist/TypeOrmConnector/test/flock.d.ts +4 -0
  54. package/dist/TypeOrmConnector/test/flock.js +25 -0
  55. package/dist/TypeOrmConnector/test/mongo/car.mongo.repository.d.ts +10 -0
  56. package/dist/TypeOrmConnector/test/mongo/car.mongo.repository.js +28 -0
  57. package/dist/TypeOrmConnector/test/mongo/mongoDatasource.d.ts +2 -0
  58. package/dist/TypeOrmConnector/test/mongo/mongoDatasource.js +12 -0
  59. package/dist/TypeOrmConnector/test/mongo/roles.mongo.repository.d.ts +9 -0
  60. package/dist/TypeOrmConnector/test/mongo/roles.mongo.repository.js +25 -0
  61. package/dist/TypeOrmConnector/test/mongo/roles_user.mongo.repository.d.ts +6 -0
  62. package/dist/TypeOrmConnector/test/mongo/roles_user.mongo.repository.js +17 -0
  63. package/dist/TypeOrmConnector/test/mongo/user.mongo.repository.d.ts +10 -0
  64. package/dist/TypeOrmConnector/test/mongo/user.mongo.repository.js +32 -0
  65. package/dist/TypeOrmConnector/test/mysql/car.mysql.repository.d.ts +10 -0
  66. package/dist/TypeOrmConnector/test/mysql/car.mysql.repository.js +26 -0
  67. package/dist/TypeOrmConnector/test/mysql/mysqlDataSource.d.ts +2 -0
  68. package/dist/TypeOrmConnector/test/mysql/mysqlDataSource.js +16 -0
  69. package/dist/TypeOrmConnector/test/mysql/roles.mysql.repository.d.ts +9 -0
  70. package/dist/TypeOrmConnector/test/mysql/roles.mysql.repository.js +25 -0
  71. package/dist/TypeOrmConnector/test/mysql/roles_user.mysql.repository.d.ts +6 -0
  72. package/dist/TypeOrmConnector/test/mysql/roles_user.mysql.repository.js +17 -0
  73. package/dist/TypeOrmConnector/test/mysql/user.mysql.repository.d.ts +10 -0
  74. package/dist/TypeOrmConnector/test/mysql/user.mysql.repository.js +33 -0
  75. package/dist/TypeOrmConnector/test/relations/car/car.entity.d.ts +7 -0
  76. package/dist/TypeOrmConnector/test/relations/car/car.entity.js +32 -0
  77. package/dist/TypeOrmConnector/test/relations/car/car.output.schema.d.ts +511 -0
  78. package/dist/TypeOrmConnector/test/relations/car/car.output.schema.js +8 -0
  79. package/dist/TypeOrmConnector/test/relations/car/car.repositoryTypeOrm.d.ts +10 -0
  80. package/dist/TypeOrmConnector/test/relations/car/car.repositoryTypeOrm.js +26 -0
  81. package/dist/TypeOrmConnector/test/relations/car/car.schema.d.ts +15 -0
  82. package/dist/TypeOrmConnector/test/relations/car/car.schema.js +9 -0
  83. package/dist/TypeOrmConnector/test/relations/relationsTestsSuite.d.ts +1 -0
  84. package/dist/TypeOrmConnector/test/relations/relationsTestsSuite.js +548 -0
  85. package/dist/TypeOrmConnector/test/relations/roles/role.output.schema.d.ts +152 -0
  86. package/dist/TypeOrmConnector/test/relations/roles/role.output.schema.js +14 -0
  87. package/dist/TypeOrmConnector/test/relations/roles/role.schema.d.ts +12 -0
  88. package/dist/TypeOrmConnector/test/relations/roles/role.schema.js +8 -0
  89. package/dist/TypeOrmConnector/test/relations/roles/roles.entity.d.ts +6 -0
  90. package/dist/TypeOrmConnector/test/relations/roles/roles.entity.js +29 -0
  91. package/dist/TypeOrmConnector/test/relations/roles/roles.repositoryTypeOrm.d.ts +9 -0
  92. package/dist/TypeOrmConnector/test/relations/roles/roles.repositoryTypeOrm.js +25 -0
  93. package/dist/TypeOrmConnector/test/relations/roles/roles_user.entity.d.ts +5 -0
  94. package/dist/TypeOrmConnector/test/relations/roles/roles_user.entity.js +23 -0
  95. package/dist/TypeOrmConnector/test/relations/roles/roles_user.schema.d.ts +15 -0
  96. package/dist/TypeOrmConnector/test/relations/roles/roles_user.schema.js +9 -0
  97. package/dist/TypeOrmConnector/test/relations/roles/roles_users.repositoryTypeOrm.d.ts +6 -0
  98. package/dist/TypeOrmConnector/test/relations/roles/roles_users.repositoryTypeOrm.js +17 -0
  99. package/dist/TypeOrmConnector/test/relations/user/user.entity.d.ts +14 -0
  100. package/dist/TypeOrmConnector/test/relations/user/user.entity.js +56 -0
  101. package/dist/TypeOrmConnector/test/relations/user/user.repositoryTypeOrm.d.ts +10 -0
  102. package/dist/TypeOrmConnector/test/relations/user/user.repositoryTypeOrm.js +30 -0
  103. package/dist/TypeOrmConnector/test/relations/user/user.schema.d.ts +546 -0
  104. package/dist/TypeOrmConnector/test/relations/user/user.schema.js +67 -0
  105. package/dist/TypeOrmConnector/test/sqlite/memoryDataSource.d.ts +2 -0
  106. package/dist/TypeOrmConnector/test/sqlite/memoryDataSource.js +12 -0
  107. package/dist/TypeOrmConnector/util/clearEmpties.d.ts +1 -0
  108. package/dist/TypeOrmConnector/util/clearEmpties.js +25 -0
  109. package/dist/TypeOrmConnector/util/extractConditions.d.ts +6 -0
  110. package/dist/TypeOrmConnector/util/extractConditions.js +80 -0
  111. package/dist/TypeOrmConnector/util/extractInclude.d.ts +2 -0
  112. package/dist/TypeOrmConnector/util/extractInclude.js +25 -0
  113. package/dist/TypeOrmConnector/util/extractMetadataFromKeys.d.ts +12 -0
  114. package/dist/TypeOrmConnector/util/extractMetadataFromKeys.js +42 -0
  115. package/dist/TypeOrmConnector/util/extractOrderBy.d.ts +4 -0
  116. package/dist/TypeOrmConnector/util/extractOrderBy.js +18 -0
  117. package/dist/TypeOrmConnector/util/getRelationsFromModelGenerator.d.ts +19 -0
  118. package/dist/TypeOrmConnector/util/getRelationsFromModelGenerator.js +26 -0
  119. package/dist/TypeOrmConnector/util/getSelectedKeysFromRawSql.d.ts +1 -0
  120. package/dist/TypeOrmConnector/util/getSelectedKeysFromRawSql.js +20 -0
  121. package/dist/TypeOrmConnector/util/isAnyObject.d.ts +1 -0
  122. package/dist/TypeOrmConnector/util/isAnyObject.js +7 -0
  123. package/dist/TypeOrmConnector/util/nestQueryResults.d.ts +2 -0
  124. package/dist/TypeOrmConnector/util/nestQueryResults.js +31 -0
  125. package/dist/cache.d.ts +9 -0
  126. package/dist/cache.js +43 -0
  127. package/dist/core/Loopback/build-schema.d.ts +31 -0
  128. package/dist/core/Loopback/build-schema.js +333 -0
  129. package/dist/core/Loopback/common-types.d.ts +36 -0
  130. package/dist/core/Loopback/common-types.js +13 -0
  131. package/dist/core/Loopback/json-to-schema.d.ts +6 -0
  132. package/dist/core/Loopback/json-to-schema.js +96 -0
  133. package/dist/core/Loopback/mapValues.d.ts +2 -0
  134. package/dist/core/Loopback/mapValues.js +835 -0
  135. package/dist/core/Loopback/metadata.d.ts +9 -0
  136. package/dist/core/Loopback/metadata.js +28 -0
  137. package/dist/core/Loopback/model.d.ts +87 -0
  138. package/dist/core/Loopback/model.js +244 -0
  139. package/dist/core/Loopback/query.d.ts +97 -0
  140. package/dist/core/Loopback/query.js +292 -0
  141. package/dist/core/Loopback/relation.types.d.ts +45 -0
  142. package/dist/core/Loopback/relation.types.js +13 -0
  143. package/dist/core/Loopback/type-resolver.d.ts +7 -0
  144. package/dist/core/Loopback/type-resolver.js +34 -0
  145. package/dist/core/Loopback/type.d.ts +9 -0
  146. package/dist/core/Loopback/type.js +2 -0
  147. package/dist/core/Nestjs/applyDecorators.d.ts +1 -0
  148. package/dist/core/Nestjs/applyDecorators.js +17 -0
  149. package/dist/core/Nestjs/types/common.d.ts +16 -0
  150. package/dist/core/Nestjs/types/common.js +37 -0
  151. package/dist/core/Nestjs/types/decorators/api-hide-property.decorator.d.ts +1 -0
  152. package/dist/core/Nestjs/types/decorators/api-hide-property.decorator.js +7 -0
  153. package/dist/core/Nestjs/types/decorators/api-property.decorator.d.ts +27 -0
  154. package/dist/core/Nestjs/types/decorators/api-property.decorator.js +65 -0
  155. package/dist/core/Nestjs/types/decorators/apply-is-optional.decorator.d.ts +5 -0
  156. package/dist/core/Nestjs/types/decorators/apply-is-optional.decorator.js +131 -0
  157. package/dist/core/Nestjs/types/decorators/args-type.decorator.d.ts +1 -0
  158. package/dist/core/Nestjs/types/decorators/args-type.decorator.js +19 -0
  159. package/dist/core/Nestjs/types/decorators/create-property.decorator.d.ts +2 -0
  160. package/dist/core/Nestjs/types/decorators/create-property.decorator.js +55 -0
  161. package/dist/core/Nestjs/types/decorators/directive.decorator.d.ts +1 -0
  162. package/dist/core/Nestjs/types/decorators/directive.decorator.js +36 -0
  163. package/dist/core/Nestjs/types/decorators/extensions.decorator.d.ts +1 -0
  164. package/dist/core/Nestjs/types/decorators/extensions.decorator.js +25 -0
  165. package/dist/core/Nestjs/types/decorators/field.decorator.d.ts +15 -0
  166. package/dist/core/Nestjs/types/decorators/field.decorator.js +56 -0
  167. package/dist/core/Nestjs/types/decorators/input-type.decorator.d.ts +7 -0
  168. package/dist/core/Nestjs/types/decorators/input-type.decorator.js +23 -0
  169. package/dist/core/Nestjs/types/decorators/interface-type.decorator.d.ts +9 -0
  170. package/dist/core/Nestjs/types/decorators/interface-type.decorator.js +27 -0
  171. package/dist/core/Nestjs/types/decorators/partial-type.helper.d.ts +3 -0
  172. package/dist/core/Nestjs/types/decorators/partial-type.helper.js +42 -0
  173. package/dist/core/Nestjs/types/errors/cannot-determine-host-type.error.d.ts +3 -0
  174. package/dist/core/Nestjs/types/errors/cannot-determine-host-type.error.js +9 -0
  175. package/dist/core/Nestjs/types/errors/directive-parsing.error.d.ts +3 -0
  176. package/dist/core/Nestjs/types/errors/directive-parsing.error.js +9 -0
  177. package/dist/core/Nestjs/types/errors/unable-to-find-fields.error.d.ts +3 -0
  178. package/dist/core/Nestjs/types/errors/unable-to-find-fields.error.js +9 -0
  179. package/dist/core/Nestjs/types/errors/undefined-type.error.d.ts +3 -0
  180. package/dist/core/Nestjs/types/errors/undefined-type.error.js +10 -0
  181. package/dist/core/Nestjs/types/interfaces/add-class-type-metadata.util.d.ts +3 -0
  182. package/dist/core/Nestjs/types/interfaces/add-class-type-metadata.util.js +10 -0
  183. package/dist/core/Nestjs/types/interfaces/base-type-options.interface.d.ts +5 -0
  184. package/dist/core/Nestjs/types/interfaces/base-type-options.interface.js +2 -0
  185. package/dist/core/Nestjs/types/interfaces/class-decorator-factory.interface.d.ts +5 -0
  186. package/dist/core/Nestjs/types/interfaces/class-decorator-factory.interface.js +2 -0
  187. package/dist/core/Nestjs/types/interfaces/complexity.interface.d.ts +11 -0
  188. package/dist/core/Nestjs/types/interfaces/complexity.interface.js +2 -0
  189. package/dist/core/Nestjs/types/interfaces/field-middleware.interface.d.ts +15 -0
  190. package/dist/core/Nestjs/types/interfaces/field-middleware.interface.js +2 -0
  191. package/dist/core/Nestjs/types/interfaces/open-api-spec.interface.d.ts +235 -0
  192. package/dist/core/Nestjs/types/interfaces/open-api-spec.interface.js +2 -0
  193. package/dist/core/Nestjs/types/interfaces/resolve-type-fn.interface.d.ts +2 -0
  194. package/dist/core/Nestjs/types/interfaces/resolve-type-fn.interface.js +2 -0
  195. package/dist/core/Nestjs/types/interfaces/return-type-func.interface.d.ts +5 -0
  196. package/dist/core/Nestjs/types/interfaces/return-type-func.interface.js +2 -0
  197. package/dist/core/Nestjs/types/interfaces/schema-object-metadata.interface.d.ts +9 -0
  198. package/dist/core/Nestjs/types/interfaces/schema-object-metadata.interface.js +2 -0
  199. package/dist/core/Nestjs/types/interfaces/type-options.interface.d.ts +5 -0
  200. package/dist/core/Nestjs/types/interfaces/type-options.interface.js +2 -0
  201. package/dist/core/Nestjs/types/lazy-metadata.storage.d.ts +15 -0
  202. package/dist/core/Nestjs/types/lazy-metadata.storage.js +67 -0
  203. package/dist/core/Nestjs/types/metadata/class.metadata.d.ts +11 -0
  204. package/dist/core/Nestjs/types/metadata/class.metadata.js +2 -0
  205. package/dist/core/Nestjs/types/metadata/directive.metadata.d.ts +8 -0
  206. package/dist/core/Nestjs/types/metadata/directive.metadata.js +2 -0
  207. package/dist/core/Nestjs/types/metadata/enum.metadata.d.ts +11 -0
  208. package/dist/core/Nestjs/types/metadata/enum.metadata.js +2 -0
  209. package/dist/core/Nestjs/types/metadata/extensions.metadata.d.ts +8 -0
  210. package/dist/core/Nestjs/types/metadata/extensions.metadata.js +2 -0
  211. package/dist/core/Nestjs/types/metadata/index.d.ts +8 -0
  212. package/dist/core/Nestjs/types/metadata/index.js +11 -0
  213. package/dist/core/Nestjs/types/metadata/interface.metadata.d.ts +6 -0
  214. package/dist/core/Nestjs/types/metadata/interface.metadata.js +2 -0
  215. package/dist/core/Nestjs/types/metadata/object-type.metadata.d.ts +4 -0
  216. package/dist/core/Nestjs/types/metadata/object-type.metadata.js +2 -0
  217. package/dist/core/Nestjs/types/metadata/param.metadata.d.ts +18 -0
  218. package/dist/core/Nestjs/types/metadata/param.metadata.js +2 -0
  219. package/dist/core/Nestjs/types/metadata/property.metadata.d.ts +20 -0
  220. package/dist/core/Nestjs/types/metadata/property.metadata.js +2 -0
  221. package/dist/core/Nestjs/types/metadata/resolver.metadata.d.ts +34 -0
  222. package/dist/core/Nestjs/types/metadata/resolver.metadata.js +2 -0
  223. package/dist/core/Nestjs/types/metadata/union.metadata.d.ts +9 -0
  224. package/dist/core/Nestjs/types/metadata/union.metadata.js +2 -0
  225. package/dist/core/Nestjs/types/object-type.decorator.d.ts +8 -0
  226. package/dist/core/Nestjs/types/object-type.decorator.js +25 -0
  227. package/dist/core/Nestjs/types/omit-type.d.ts +2 -0
  228. package/dist/core/Nestjs/types/omit-type.js +34 -0
  229. package/dist/core/Nestjs/types/reflection.utils.d.ts +15 -0
  230. package/dist/core/Nestjs/types/reflection.utils.js +65 -0
  231. package/dist/core/Nestjs/types/set-metadata.decorator.d.ts +4 -0
  232. package/dist/core/Nestjs/types/set-metadata.decorator.js +16 -0
  233. package/dist/core/Nestjs/types/type-metadata.storage.d.ts +69 -0
  234. package/dist/core/Nestjs/types/type-metadata.storage.js +342 -0
  235. package/dist/core/Nestjs/types/utils/enum.utils.d.ts +3 -0
  236. package/dist/core/Nestjs/types/utils/enum.utils.js +29 -0
  237. package/dist/core/Nestjs/types/utils/get-fields-and-decorator.util.d.ts +3 -0
  238. package/dist/core/Nestjs/types/utils/get-fields-and-decorator.util.js +72 -0
  239. package/dist/core/Nestjs/types/utils/mapped-types.utils.d.ts +2 -0
  240. package/dist/core/Nestjs/types/utils/mapped-types.utils.js +38 -0
  241. package/dist/core/Nestjs/types/utils/model-properties-accessor.d.ts +6 -0
  242. package/dist/core/Nestjs/types/utils/model-properties-accessor.js +36 -0
  243. package/dist/core/Nestjs/types/utils/type-helpers.utils.d.ts +2 -0
  244. package/dist/core/Nestjs/types/utils/type-helpers.utils.js +16 -0
  245. package/dist/core/types.d.ts +23 -0
  246. package/dist/core/types.js +29 -0
  247. package/dist/decorators.d.ts +47 -0
  248. package/dist/decorators.js +104 -0
  249. package/dist/generatorDatasource.d.ts +2 -0
  250. package/dist/generatorDatasource.js +12 -0
  251. package/dist/index.d.ts +29 -0
  252. package/dist/index.js +49 -0
  253. package/dist/loadRelations.d.ts +12 -0
  254. package/dist/loadRelations.js +133 -0
  255. package/dist/outputKeys.d.ts +2 -0
  256. package/dist/outputKeys.js +17 -0
  257. package/dist/tsconfig.tsbuildinfo +1 -0
  258. package/dist/types.d.ts +141 -0
  259. package/dist/types.js +22 -0
  260. package/package.json +2 -2
@@ -0,0 +1,370 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TypeOrmConnector = void 0;
4
+ const js_utils_1 = require("@goatlab/js-utils");
5
+ const BaseConnector_1 = require("../BaseConnector");
6
+ const outputKeys_1 = require("../outputKeys");
7
+ const generatorDatasource_1 = require("../generatorDatasource");
8
+ const getMongoWhere_1 = require("./queryBuilder/mongodb/getMongoWhere");
9
+ const getRelationsFromModelGenerator_1 = require("./util/getRelationsFromModelGenerator");
10
+ const getMongoFindAggregatedQuery_1 = require("./queryBuilder/mongodb/getMongoFindAggregatedQuery");
11
+ const extractInclude_1 = require("./util/extractInclude");
12
+ const extractOrderBy_1 = require("./util/extractOrderBy");
13
+ const getTypeOrmWhere_1 = require("./queryBuilder/sql/getTypeOrmWhere");
14
+ const getQueryBuilderWhere_1 = require("./queryBuilder/sql/getQueryBuilderWhere");
15
+ const clearEmpties_1 = require("./util/clearEmpties");
16
+ class TypeOrmConnector extends BaseConnector_1.BaseConnector {
17
+ constructor({ entity, dataSource, inputSchema, outputSchema }) {
18
+ super();
19
+ this.dataSource = dataSource;
20
+ this.inputSchema = inputSchema;
21
+ this.outputSchema =
22
+ outputSchema || inputSchema;
23
+ this.entity = entity;
24
+ this.repository = this.dataSource.getRepository(entity);
25
+ this.isMongoDB =
26
+ this.repository.metadata.connection.driver.options.type === 'mongodb';
27
+ if (this.isMongoDB) {
28
+ this.repository = this.dataSource.getMongoRepository(entity);
29
+ }
30
+ const relationShipBuilder = generatorDatasource_1.modelGeneratorDataSource.getRepository(entity);
31
+ const { relations } = (0, getRelationsFromModelGenerator_1.getRelationsFromModelGenerator)(relationShipBuilder);
32
+ this.modelRelations = relations;
33
+ this.outputKeys = (0, outputKeys_1.getOutputKeys)(relationShipBuilder) || [];
34
+ }
35
+ async insert(data) {
36
+ const validatedData = this.inputSchema.parse(data);
37
+ if (this.isMongoDB && validatedData['id']) {
38
+ validatedData['_id'] = js_utils_1.Ids.objectID(validatedData['id']);
39
+ delete validatedData['id'];
40
+ }
41
+ let datum = await this.repository.save(validatedData);
42
+ if (this.isMongoDB) {
43
+ datum['id'] = datum['id'].toString();
44
+ }
45
+ return this.outputSchema.parse((0, clearEmpties_1.clearEmpties)(js_utils_1.Objects.deleteNulls(datum)));
46
+ }
47
+ async insertMany(data) {
48
+ const validatedData = this.inputSchema.array().parse(data);
49
+ const inserted = await this.repository.save(validatedData, {
50
+ chunk: data.length / 300
51
+ });
52
+ return this.outputSchema.array().parse(inserted.map(d => {
53
+ if (this.isMongoDB) {
54
+ d['id'] = d['id'].toString();
55
+ }
56
+ return (0, clearEmpties_1.clearEmpties)(js_utils_1.Objects.deleteNulls(d));
57
+ }));
58
+ }
59
+ async findMany(query) {
60
+ const requiresCustomQuery = query?.include && Object.keys(query.include).length;
61
+ if (this.isMongoDB) {
62
+ const results = await this.customMongoRelatedFind(query);
63
+ return results;
64
+ }
65
+ if (requiresCustomQuery) {
66
+ const { queryBuilder: customQuery, selectedKeys } = this.customTypeOrmRelatedFind({
67
+ fluentQuery: query
68
+ });
69
+ customQuery.select(selectedKeys);
70
+ let [result, count] = await customQuery.getManyAndCount();
71
+ return result;
72
+ }
73
+ const generatedQuery = this.generateTypeOrmQuery(query);
74
+ let [found, count] = await this.repository.findAndCount(generatedQuery);
75
+ found.map(d => {
76
+ if (this.isMongoDB) {
77
+ d['id'] = d['_id'].toString();
78
+ }
79
+ (0, clearEmpties_1.clearEmpties)(js_utils_1.Objects.deleteNulls(d));
80
+ });
81
+ if (query?.paginated) {
82
+ const paginationInfo = {
83
+ total: count,
84
+ perPage: query.paginated.perPage,
85
+ currentPage: query.paginated.page,
86
+ nextPage: query.paginated.page + 1,
87
+ firstPage: 1,
88
+ lastPage: Math.ceil(count / query.paginated.perPage),
89
+ prevPage: query.paginated.page === 1 ? null : query.paginated.page - 1,
90
+ from: (query.paginated.page - 1) * query.paginated.perPage + 1,
91
+ to: query.paginated.perPage * query.paginated.page,
92
+ data: found
93
+ };
94
+ return paginationInfo;
95
+ }
96
+ if (query?.select) {
97
+ return found;
98
+ }
99
+ return this.outputSchema?.array().parse(found);
100
+ }
101
+ async updateById(id, data) {
102
+ const dataToInsert = this.outputKeys.includes('updated')
103
+ ? {
104
+ ...data,
105
+ ...{ updated: new Date() }
106
+ }
107
+ : data;
108
+ const validatedData = this.inputSchema.parse(dataToInsert);
109
+ await this.repository.update(id, validatedData);
110
+ return (await this.requireById(id));
111
+ }
112
+ async replaceById(id, data) {
113
+ const idFieldName = this.isMongoDB ? '_id' : 'id';
114
+ const value = this.requireById(id);
115
+ const flatValue = js_utils_1.Objects.flatten(JSON.parse(JSON.stringify(value)));
116
+ Object.keys(flatValue).forEach(key => {
117
+ flatValue[key] = null;
118
+ });
119
+ const nullObject = js_utils_1.Objects.nest(flatValue);
120
+ const newValue = { ...nullObject, ...data };
121
+ delete newValue._id;
122
+ delete newValue.id;
123
+ delete newValue.created;
124
+ delete newValue.updated;
125
+ const dataToInsert = this.outputKeys.includes('updated')
126
+ ? {
127
+ ...data,
128
+ ...{ updated: new Date() }
129
+ }
130
+ : data;
131
+ const validatedData = this.inputSchema.parse(dataToInsert);
132
+ await this.repository.update(id, validatedData);
133
+ return (await this.requireById(id));
134
+ }
135
+ async deleteById(id) {
136
+ const parsedId = this.isMongoDB
137
+ ? js_utils_1.Ids.objectID(id)
138
+ : id;
139
+ await this.repository.delete(parsedId);
140
+ return id;
141
+ }
142
+ async clear() {
143
+ await this.repository.clear();
144
+ return true;
145
+ }
146
+ loadFirst(query) {
147
+ const newInstance = this.clone();
148
+ newInstance.setRelatedQuery({
149
+ entity: this.entity,
150
+ repository: this,
151
+ query: {
152
+ ...query,
153
+ limit: 1
154
+ }
155
+ });
156
+ return newInstance;
157
+ }
158
+ loadById(id) {
159
+ const newInstance = this.clone();
160
+ newInstance.setRelatedQuery({
161
+ entity: this.entity,
162
+ repository: this,
163
+ query: {
164
+ where: {
165
+ id
166
+ }
167
+ }
168
+ });
169
+ return newInstance;
170
+ }
171
+ raw() {
172
+ return this.repository;
173
+ }
174
+ mongoRaw() {
175
+ return this.repository;
176
+ }
177
+ clone() {
178
+ return new this.constructor();
179
+ }
180
+ generateTypeOrmQuery(query) {
181
+ let filter = {};
182
+ filter.where = this.isMongoDB
183
+ ? (0, getMongoWhere_1.getMongoWhere)({
184
+ where: query?.where
185
+ })
186
+ : (0, getTypeOrmWhere_1.getTypeOrmWhere)({
187
+ where: query?.where
188
+ });
189
+ filter.take = query?.limit;
190
+ filter.skip = query?.offset;
191
+ if (query?.paginated) {
192
+ filter.take = query.paginated.perPage;
193
+ filter.skip = (query.paginated?.page - 1) * query?.paginated.perPage;
194
+ }
195
+ if (query?.select) {
196
+ const selectQuery = js_utils_1.Objects.flatten(query?.select || {});
197
+ filter.select = selectQuery;
198
+ }
199
+ if (query?.orderBy) {
200
+ filter.order = (0, extractOrderBy_1.extractOrderBy)(query.orderBy);
201
+ }
202
+ if (query?.include) {
203
+ filter.relations = (0, extractInclude_1.extractInclude)(query.include);
204
+ }
205
+ return filter;
206
+ }
207
+ customTypeOrmRelatedFind({ fluentQuery: query, queryBuilder, targetFluentRepository, alias, isLeftJoin }) {
208
+ const queryAlias = alias || queryBuilder?.alias || `${this.repository.metadata.tableName}`;
209
+ let customQuery = queryBuilder || this.raw().createQueryBuilder(queryAlias);
210
+ const self = targetFluentRepository || this;
211
+ if (!isLeftJoin) {
212
+ customQuery = (0, getQueryBuilderWhere_1.getQueryBuilderWhere)({
213
+ queryBuilder: customQuery,
214
+ queryAlias,
215
+ where: query?.where
216
+ });
217
+ }
218
+ const { queryBuilder: qb, selectedKeys } = this.getTypeOrmQueryBuilderSubqueries({
219
+ queryBuilder: customQuery,
220
+ selfReference: targetFluentRepository,
221
+ include: query?.include,
222
+ leftTableAlias: alias
223
+ });
224
+ customQuery = qb;
225
+ const extraKeys = this.getTypeOrmQueryBuilderSelect(queryAlias, self, query?.select);
226
+ const keySet = new Set([...selectedKeys, ...extraKeys]);
227
+ return {
228
+ queryBuilder: customQuery,
229
+ selectedKeys: Array.from(keySet)
230
+ };
231
+ }
232
+ getTypeOrmQueryBuilderSelect(queryAlias, self, select) {
233
+ const selected = js_utils_1.Objects.flatten(select || {});
234
+ const selectedKeys = [];
235
+ const iterableKeys = Object.keys(selected).length
236
+ ? Object.keys(selected)
237
+ : self.outputKeys || [];
238
+ const baseNestedKeys = new Set();
239
+ for (const key of iterableKeys) {
240
+ const keyArray = key.split('.');
241
+ if (keyArray.length <= 1) {
242
+ continue;
243
+ }
244
+ const total = keyArray.length;
245
+ for (const [index, val] of keyArray.entries()) {
246
+ if (total === index + 1) {
247
+ continue;
248
+ }
249
+ let excludedField = '';
250
+ if (excludedField) {
251
+ excludedField = `${excludedField}.${excludedField}${val}`;
252
+ }
253
+ excludedField = `${excludedField}${val}`;
254
+ baseNestedKeys.add(excludedField);
255
+ }
256
+ }
257
+ for (const k of iterableKeys) {
258
+ const field = k.includes('.') ? js_utils_1.Strings.camel(`${k}`) : k;
259
+ const search = `${queryAlias}.${field}`;
260
+ let isNestedRelation = false;
261
+ for (const item of k.split('.')) {
262
+ if (!!self[item]) {
263
+ isNestedRelation = true;
264
+ break;
265
+ }
266
+ }
267
+ if (!!self[field] || !!self[queryAlias] || isNestedRelation) {
268
+ continue;
269
+ }
270
+ if (baseNestedKeys.has(field)) {
271
+ continue;
272
+ }
273
+ selectedKeys.push(search);
274
+ }
275
+ return selectedKeys;
276
+ }
277
+ getTypeOrmQueryBuilderSubqueries({ queryBuilder, selfReference, include, leftTableAlias }) {
278
+ const selectedKeys = [];
279
+ if (!include) {
280
+ return { queryBuilder, selectedKeys };
281
+ }
282
+ for (const relation of Object.keys(include)) {
283
+ const self = selfReference || this;
284
+ const dbRelation = self.modelRelations[relation];
285
+ const newSelf = self[relation]();
286
+ const fluentRelatedQuery = include[relation] === true ? {} : include[relation];
287
+ if (!dbRelation) {
288
+ throw new Error(`The relation ${relation} is not properly defined. Check your entity and repository`);
289
+ }
290
+ const selectedKeysArray = fluentRelatedQuery.select
291
+ ? Object.keys(js_utils_1.Objects.flatten(fluentRelatedQuery.select))
292
+ : [];
293
+ if (dbRelation.isManyToOne) {
294
+ const leftSideTableName = leftTableAlias || queryBuilder.alias;
295
+ const leftSideForeignKey = `${leftSideTableName}.${dbRelation.joinColumns[0].propertyPath}`;
296
+ const rightSideTableName = `${leftSideTableName}_${relation}`;
297
+ const rightSidePrimaryKey = `${rightSideTableName}.id`;
298
+ const keys = new Set(selectedKeysArray.map(k => `${rightSideTableName}.${k}`));
299
+ selectedKeys.push(...Array.from(keys));
300
+ const shallowQuery = { ...fluentRelatedQuery };
301
+ delete shallowQuery['include'];
302
+ const { queryBuilder: leftJoinBuilder, selectedKeys: deepkeys } = this.customTypeOrmRelatedFind({
303
+ queryBuilder: this.raw().createQueryBuilder(rightSideTableName),
304
+ fluentQuery: shallowQuery,
305
+ targetFluentRepository: newSelf,
306
+ alias: rightSideTableName
307
+ });
308
+ selectedKeys.push(...deepkeys);
309
+ const joinQuery = leftJoinBuilder.getQuery().split('WHERE');
310
+ const customLeftJoin = joinQuery && joinQuery[1] ? joinQuery[1].trim() : '1=1';
311
+ const leftJoinParams = leftJoinBuilder.getParameters();
312
+ queryBuilder.leftJoinAndMapOne(`${leftSideTableName}.${relation}`, dbRelation.targetClass, rightSideTableName, `(${leftSideForeignKey} = ${rightSidePrimaryKey} AND ${customLeftJoin} )`, leftJoinParams);
313
+ const { queryBuilder: qb, selectedKeys: k } = this.customTypeOrmRelatedFind({
314
+ queryBuilder,
315
+ fluentQuery: fluentRelatedQuery,
316
+ targetFluentRepository: newSelf,
317
+ alias: rightSideTableName,
318
+ isLeftJoin: true
319
+ });
320
+ selectedKeys.push(...k);
321
+ queryBuilder = qb;
322
+ }
323
+ if (dbRelation.isOneToMany) {
324
+ const leftSideTableName = leftTableAlias || queryBuilder.alias;
325
+ const leftSidePrimaryKey = `${leftSideTableName}.id`;
326
+ const rightSideTableName = `${leftSideTableName}_${relation}`;
327
+ const rightSideForeignKey = `${rightSideTableName}.${dbRelation.inverseSidePropertyPath}`;
328
+ const keys = new Set(selectedKeysArray.map(k => `${rightSideTableName}.${k}`));
329
+ selectedKeys.push(...Array.from(keys));
330
+ const shallowQuery = { ...fluentRelatedQuery };
331
+ delete shallowQuery['include'];
332
+ const { queryBuilder: leftJoinBuilder, selectedKeys: deepKeys } = this.customTypeOrmRelatedFind({
333
+ queryBuilder: this.raw().createQueryBuilder(rightSideTableName),
334
+ fluentQuery: shallowQuery,
335
+ targetFluentRepository: newSelf,
336
+ alias: rightSideTableName
337
+ });
338
+ selectedKeys.push(...deepKeys);
339
+ const joinQuery = leftJoinBuilder.getQuery().split('WHERE');
340
+ const customLeftJoin = joinQuery && joinQuery[1] ? joinQuery[1].trim() : '1=1';
341
+ const leftJoinParams = leftJoinBuilder.getParameters();
342
+ queryBuilder.leftJoinAndMapMany(`${leftSideTableName}.${relation}`, dbRelation.targetClass, rightSideTableName, `(${leftSidePrimaryKey} = ${rightSideForeignKey} AND ${customLeftJoin} )`, leftJoinParams);
343
+ const { queryBuilder: q, selectedKeys: k } = this.customTypeOrmRelatedFind({
344
+ queryBuilder,
345
+ fluentQuery: fluentRelatedQuery,
346
+ targetFluentRepository: newSelf,
347
+ alias: rightSideTableName,
348
+ isLeftJoin: true
349
+ });
350
+ selectedKeys.push(...k);
351
+ queryBuilder = q;
352
+ }
353
+ }
354
+ return { queryBuilder, selectedKeys };
355
+ }
356
+ async customMongoRelatedFind(query) {
357
+ const aggregate = (0, getMongoFindAggregatedQuery_1.getMongoFindAggregatedQuery)({
358
+ query,
359
+ self: this
360
+ });
361
+ const raw = await this.mongoRaw().aggregate(aggregate).toArray();
362
+ if (query?.select) {
363
+ return this.outputSchema['deepPartial']()
364
+ .array()
365
+ .parse(raw);
366
+ }
367
+ return this.outputSchema?.array().parse(raw);
368
+ }
369
+ }
370
+ exports.TypeOrmConnector = TypeOrmConnector;
@@ -0,0 +1,7 @@
1
+ import { AnyObject, FluentQuery } from '../../../types';
2
+ export interface getMongoBaseAggregationParams {
3
+ include: FluentQuery<AnyObject>['include'];
4
+ self: any;
5
+ alias?: string;
6
+ }
7
+ export declare const getMongoBaseAggregation: ({ include, self }: getMongoBaseAggregationParams) => any[];
@@ -0,0 +1,148 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getMongoBaseAggregation = void 0;
4
+ const getMongoWhere_1 = require("./getMongoWhere");
5
+ const getMongoBaseAggregation = ({ include, self }) => {
6
+ if (!include) {
7
+ return [];
8
+ }
9
+ const modelRelations = self.modelRelations;
10
+ const aggregations = [];
11
+ for (const relation of Object.keys(include)) {
12
+ if (!modelRelations[relation]) {
13
+ continue;
14
+ }
15
+ const innerLookups = [];
16
+ const dbRelation = modelRelations[relation];
17
+ if (include[relation]['include']) {
18
+ const newSelf = self[relation] && self[relation]();
19
+ const innerRelations = (0, exports.getMongoBaseAggregation)({
20
+ include: include[relation]['include'],
21
+ self: newSelf
22
+ });
23
+ innerLookups.push(...innerRelations);
24
+ }
25
+ const where = (0, getMongoWhere_1.getMongoWhere)({
26
+ where: include[relation]['where']
27
+ });
28
+ if (dbRelation.isManyToOne) {
29
+ const localField = dbRelation.joinColumns[0].propertyPath;
30
+ aggregations.push({
31
+ $addFields: {
32
+ [`${localField}_object`]: { $toObjectId: `$${localField}` }
33
+ }
34
+ });
35
+ aggregations.push({ $addFields: { id: { $toString: '$_id' } } });
36
+ aggregations.push({
37
+ $lookup: {
38
+ from: dbRelation.tableName,
39
+ localField: `${localField}_object`,
40
+ foreignField: '_id',
41
+ as: dbRelation.propertyName,
42
+ pipeline: [
43
+ {
44
+ $match: where
45
+ },
46
+ { $addFields: { id: { $toString: '$_id' } } },
47
+ ...innerLookups
48
+ ]
49
+ }
50
+ });
51
+ aggregations.push({
52
+ $unwind: {
53
+ path: `$${dbRelation.propertyName}`,
54
+ preserveNullAndEmptyArrays: true
55
+ }
56
+ });
57
+ }
58
+ if (dbRelation.isOneToMany) {
59
+ aggregations.push({ $addFields: { string_id: { $toString: '$_id' } } });
60
+ aggregations.push({ $addFields: { id: { $toString: '$_id' } } });
61
+ aggregations.push({
62
+ $lookup: {
63
+ from: dbRelation.tableName,
64
+ localField: 'string_id',
65
+ foreignField: dbRelation.inverseSidePropertyPath,
66
+ as: dbRelation.propertyName,
67
+ pipeline: [
68
+ {
69
+ $match: where
70
+ },
71
+ { $addFields: { id: { $toString: '$_id' } } },
72
+ ...innerLookups
73
+ ]
74
+ }
75
+ });
76
+ }
77
+ if (dbRelation.isManyToMany) {
78
+ const relatedTableName = dbRelation.tableName;
79
+ const pivotTableName = dbRelation.joinColumns[0].relationMetadata.joinTableName;
80
+ const pivotForeignField = dbRelation.joinColumns[0].propertyPath;
81
+ const inverseForeignField = dbRelation.inverseJoinColumns[0].propertyPath;
82
+ if (!relatedTableName ||
83
+ !pivotTableName ||
84
+ !pivotForeignField ||
85
+ !inverseForeignField) {
86
+ throw new Error(`Your many to many relation is not properly set up. Please check both your models and schema for relation: ${relation}`);
87
+ }
88
+ aggregations.push({ $addFields: { id: { $toString: '$_id' } } });
89
+ aggregations.push({
90
+ $addFields: { parent_string_id: { $toString: '$_id' } }
91
+ });
92
+ aggregations.push({
93
+ $lookup: {
94
+ from: pivotTableName,
95
+ localField: 'parent_string_id',
96
+ foreignField: pivotForeignField,
97
+ as: dbRelation.propertyName,
98
+ pipeline: [
99
+ { $addFields: { id: { $toString: '$_id' } } },
100
+ {
101
+ $addFields: {
102
+ [`${inverseForeignField}_object`]: {
103
+ $toObjectId: `$${inverseForeignField}`
104
+ }
105
+ }
106
+ },
107
+ {
108
+ $lookup: {
109
+ from: relatedTableName,
110
+ localField: `${inverseForeignField}_object`,
111
+ foreignField: '_id',
112
+ pipeline: [
113
+ {
114
+ $match: where
115
+ },
116
+ { $addFields: { id: { $toString: '$_id' } } }
117
+ ],
118
+ as: dbRelation.propertyName
119
+ }
120
+ },
121
+ {
122
+ $unwind: {
123
+ path: `$${dbRelation.propertyName}`,
124
+ preserveNullAndEmptyArrays: true
125
+ }
126
+ },
127
+ {
128
+ $project: {
129
+ [dbRelation.propertyName]: `$${dbRelation.propertyName}`,
130
+ pivot: '$$ROOT'
131
+ }
132
+ },
133
+ {
134
+ $replaceRoot: {
135
+ newRoot: {
136
+ $mergeObjects: ['$$ROOT', `$${dbRelation.propertyName}`]
137
+ }
138
+ }
139
+ },
140
+ { $project: { [dbRelation.propertyName]: 0 } }
141
+ ]
142
+ }
143
+ });
144
+ }
145
+ }
146
+ return aggregations;
147
+ };
148
+ exports.getMongoBaseAggregation = getMongoBaseAggregation;
@@ -0,0 +1,6 @@
1
+ import { FluentQuery } from '../../../types';
2
+ export declare type getFindAggregateQueryParams<T extends FluentQuery<any>> = {
3
+ query?: T;
4
+ self?: any;
5
+ };
6
+ export declare const getMongoFindAggregatedQuery: ({ query, self }: getFindAggregateQueryParams<any>) => any[];
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getMongoFindAggregatedQuery = void 0;
4
+ const getMongoBaseAggregations_1 = require("./getMongoBaseAggregations");
5
+ const getMongoOrderBy_1 = require("./getMongoOrderBy");
6
+ const getMongoSelect_1 = require("./getMongoSelect");
7
+ const getMongoWhere_1 = require("./getMongoWhere");
8
+ const getMongoFindAggregatedQuery = ({ query, self }) => {
9
+ const selected = (0, getMongoSelect_1.getMongoSelect)(query?.select);
10
+ const orderBy = (0, getMongoOrderBy_1.getMongoOrderBy)(query?.orderBy);
11
+ const where = (0, getMongoWhere_1.getMongoWhere)({
12
+ where: query?.where
13
+ });
14
+ const baseAggregations = (0, getMongoBaseAggregations_1.getMongoBaseAggregation)({
15
+ include: query?.include,
16
+ self
17
+ });
18
+ const aggregate = [
19
+ {
20
+ $match: where
21
+ }
22
+ ];
23
+ if (orderBy) {
24
+ aggregate.push(orderBy);
25
+ }
26
+ if (!query?.include) {
27
+ aggregate.push({ $addFields: { id: { $toString: '$_id' } } });
28
+ }
29
+ if (query?.offset) {
30
+ aggregate.push({ $skip: query?.offset });
31
+ }
32
+ if (query?.limit) {
33
+ aggregate.push({ $limit: query.limit });
34
+ }
35
+ for (const lookup of baseAggregations) {
36
+ aggregate.push(lookup);
37
+ }
38
+ if (selected && Object.keys(selected).length) {
39
+ aggregate.push({
40
+ $project: selected
41
+ });
42
+ }
43
+ return aggregate;
44
+ };
45
+ exports.getMongoFindAggregatedQuery = getMongoFindAggregatedQuery;
@@ -0,0 +1,4 @@
1
+ import { FluentQuery } from '../../../types';
2
+ export declare const getMongoOrderBy: (orderBy?: FluentQuery<any>['orderBy']) => {
3
+ $sort: {};
4
+ } | undefined;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getMongoOrderBy = void 0;
4
+ const extractOrderBy_1 = require("../../util/extractOrderBy");
5
+ const getMongoOrderBy = (orderBy) => {
6
+ if (!orderBy) {
7
+ return undefined;
8
+ }
9
+ const order = (0, extractOrderBy_1.extractOrderBy)(orderBy);
10
+ const sort = {
11
+ $sort: {}
12
+ };
13
+ for (const key of Object.keys(order)) {
14
+ const val = order[key];
15
+ sort.$sort[key] = val === 'asc' ? 1 : -1;
16
+ }
17
+ return sort;
18
+ };
19
+ exports.getMongoOrderBy = getMongoOrderBy;
@@ -0,0 +1,4 @@
1
+ import { FluentQuery } from '../../../types';
2
+ export declare const getMongoSelect: (select: FluentQuery<any>['select']) => {
3
+ [key: string]: any;
4
+ };
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getMongoSelect = void 0;
4
+ const js_utils_1 = require("@goatlab/js-utils");
5
+ const getMongoSelect = (select) => {
6
+ const selected = js_utils_1.Objects.flatten(select || {});
7
+ for (const k of Object.keys(selected)) {
8
+ selected[k] = 1;
9
+ }
10
+ return selected;
11
+ };
12
+ exports.getMongoSelect = getMongoSelect;
@@ -0,0 +1,6 @@
1
+ import { FindManyOptions } from 'typeorm';
2
+ import { AnyObject, FluentQuery } from '../../../types';
3
+ export interface getTypeOrmMongoWhereParams {
4
+ where?: FluentQuery<AnyObject>['where'];
5
+ }
6
+ export declare const getMongoWhere: ({ where }: getTypeOrmMongoWhereParams) => FindManyOptions['where'];