@goatlab/fluent 0.7.38 → 0.7.40

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 +112 -0
  2. package/dist/BaseConnector.js +343 -0
  3. package/dist/BaseConnector.js.map +1 -0
  4. package/dist/Fluent.d.ts +11 -0
  5. package/dist/Fluent.js +27 -0
  6. package/dist/Fluent.js.map +1 -0
  7. package/dist/FluentConnectorInterface.d.ts +17 -0
  8. package/dist/FluentConnectorInterface.js +3 -0
  9. package/dist/FluentConnectorInterface.js.map +1 -0
  10. package/dist/FluentEntity.d.ts +7 -0
  11. package/dist/FluentEntity.js +29 -0
  12. package/dist/FluentEntity.js.map +1 -0
  13. package/dist/TypeOrmConnector/TypeOrmConnector.d.ts +123 -0
  14. package/dist/TypeOrmConnector/TypeOrmConnector.js +760 -0
  15. package/dist/TypeOrmConnector/TypeOrmConnector.js.map +1 -0
  16. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoBaseAggregations.d.ts +12 -0
  17. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoBaseAggregations.js +167 -0
  18. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoBaseAggregations.js.map +1 -0
  19. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoFindAggregatedQuery.d.ts +11 -0
  20. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoFindAggregatedQuery.js +52 -0
  21. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoFindAggregatedQuery.js.map +1 -0
  22. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoOrderBy.d.ts +4 -0
  23. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoOrderBy.js +20 -0
  24. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoOrderBy.js.map +1 -0
  25. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoSelect.d.ts +7 -0
  26. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoSelect.js +19 -0
  27. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoSelect.js.map +1 -0
  28. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoWhere.d.ts +11 -0
  29. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoWhere.js +173 -0
  30. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoWhere.js.map +1 -0
  31. package/dist/TypeOrmConnector/queryBuilder/sql/getQueryBuilderWhere.d.ts +13 -0
  32. package/dist/TypeOrmConnector/queryBuilder/sql/getQueryBuilderWhere.js +207 -0
  33. package/dist/TypeOrmConnector/queryBuilder/sql/getQueryBuilderWhere.js.map +1 -0
  34. package/dist/TypeOrmConnector/queryBuilder/sql/getTypeOrmWhere.d.ts +11 -0
  35. package/dist/TypeOrmConnector/queryBuilder/sql/getTypeOrmWhere.js +214 -0
  36. package/dist/TypeOrmConnector/queryBuilder/sql/getTypeOrmWhere.js.map +1 -0
  37. package/dist/TypeOrmConnector/util/clearEmpties.d.ts +7 -0
  38. package/dist/TypeOrmConnector/util/clearEmpties.js +33 -0
  39. package/dist/TypeOrmConnector/util/clearEmpties.js.map +1 -0
  40. package/dist/TypeOrmConnector/util/extractConditions.d.ts +12 -0
  41. package/dist/TypeOrmConnector/util/extractConditions.js +89 -0
  42. package/dist/TypeOrmConnector/util/extractConditions.js.map +1 -0
  43. package/dist/TypeOrmConnector/util/extractInclude.d.ts +2 -0
  44. package/dist/TypeOrmConnector/util/extractInclude.js +26 -0
  45. package/dist/TypeOrmConnector/util/extractInclude.js.map +1 -0
  46. package/dist/TypeOrmConnector/util/extractMetadataFromKeys.d.ts +12 -0
  47. package/dist/TypeOrmConnector/util/extractMetadataFromKeys.js +49 -0
  48. package/dist/TypeOrmConnector/util/extractMetadataFromKeys.js.map +1 -0
  49. package/dist/TypeOrmConnector/util/extractOrderBy.d.ts +2 -0
  50. package/dist/TypeOrmConnector/util/extractOrderBy.js +24 -0
  51. package/dist/TypeOrmConnector/util/extractOrderBy.js.map +1 -0
  52. package/dist/TypeOrmConnector/util/getRelationsFromModelGenerator.d.ts +19 -0
  53. package/dist/TypeOrmConnector/util/getRelationsFromModelGenerator.js +27 -0
  54. package/dist/TypeOrmConnector/util/getRelationsFromModelGenerator.js.map +1 -0
  55. package/dist/TypeOrmConnector/util/getSelectedKeysFromRawSql.d.ts +6 -0
  56. package/dist/TypeOrmConnector/util/getSelectedKeysFromRawSql.js +29 -0
  57. package/dist/TypeOrmConnector/util/getSelectedKeysFromRawSql.js.map +1 -0
  58. package/dist/TypeOrmConnector/util/isAnyObject.d.ts +1 -0
  59. package/dist/TypeOrmConnector/util/isAnyObject.js +8 -0
  60. package/dist/TypeOrmConnector/util/isAnyObject.js.map +1 -0
  61. package/dist/TypeOrmConnector/util/nestQueryResults.d.ts +2 -0
  62. package/dist/TypeOrmConnector/util/nestQueryResults.js +38 -0
  63. package/dist/TypeOrmConnector/util/nestQueryResults.js.map +1 -0
  64. package/dist/core/Loopback/build-schema.d.ts +148 -0
  65. package/dist/core/Loopback/build-schema.js +443 -0
  66. package/dist/core/Loopback/build-schema.js.map +1 -0
  67. package/dist/core/Loopback/common-types.d.ts +96 -0
  68. package/dist/core/Loopback/common-types.js +24 -0
  69. package/dist/core/Loopback/common-types.js.map +1 -0
  70. package/dist/core/Loopback/json-to-schema.d.ts +41 -0
  71. package/dist/core/Loopback/json-to-schema.js +113 -0
  72. package/dist/core/Loopback/json-to-schema.js.map +1 -0
  73. package/dist/core/Loopback/metadata.d.ts +16 -0
  74. package/dist/core/Loopback/metadata.js +49 -0
  75. package/dist/core/Loopback/metadata.js.map +1 -0
  76. package/dist/core/Loopback/model.d.ts +233 -0
  77. package/dist/core/Loopback/model.js +387 -0
  78. package/dist/core/Loopback/model.js.map +1 -0
  79. package/dist/core/Loopback/query.d.ts +394 -0
  80. package/dist/core/Loopback/query.js +482 -0
  81. package/dist/core/Loopback/query.js.map +1 -0
  82. package/dist/core/Loopback/relation.types.d.ts +141 -0
  83. package/dist/core/Loopback/relation.types.js +18 -0
  84. package/dist/core/Loopback/relation.types.js.map +1 -0
  85. package/dist/core/Loopback/type-resolver.d.ts +42 -0
  86. package/dist/core/Loopback/type-resolver.js +60 -0
  87. package/dist/core/Loopback/type-resolver.js.map +1 -0
  88. package/dist/core/Loopback/type.d.ts +38 -0
  89. package/dist/core/Loopback/type.js +7 -0
  90. package/dist/core/Loopback/type.js.map +1 -0
  91. package/dist/core/Nestjs/applyDecorators.d.ts +10 -0
  92. package/dist/core/Nestjs/applyDecorators.js +26 -0
  93. package/dist/core/Nestjs/applyDecorators.js.map +1 -0
  94. package/dist/core/Nestjs/types/common.d.ts +16 -0
  95. package/dist/core/Nestjs/types/common.js +38 -0
  96. package/dist/core/Nestjs/types/common.js.map +1 -0
  97. package/dist/core/Nestjs/types/decorators/api-hide-property.decorator.d.ts +1 -0
  98. package/dist/core/Nestjs/types/decorators/api-hide-property.decorator.js +8 -0
  99. package/dist/core/Nestjs/types/decorators/api-hide-property.decorator.js.map +1 -0
  100. package/dist/core/Nestjs/types/decorators/api-property.decorator.d.ts +27 -0
  101. package/dist/core/Nestjs/types/decorators/api-property.decorator.js +66 -0
  102. package/dist/core/Nestjs/types/decorators/api-property.decorator.js.map +1 -0
  103. package/dist/core/Nestjs/types/decorators/apply-is-optional.decorator.d.ts +5 -0
  104. package/dist/core/Nestjs/types/decorators/apply-is-optional.decorator.js +136 -0
  105. package/dist/core/Nestjs/types/decorators/apply-is-optional.decorator.js.map +1 -0
  106. package/dist/core/Nestjs/types/decorators/args-type.decorator.d.ts +4 -0
  107. package/dist/core/Nestjs/types/decorators/args-type.decorator.js +24 -0
  108. package/dist/core/Nestjs/types/decorators/args-type.decorator.js.map +1 -0
  109. package/dist/core/Nestjs/types/decorators/create-property.decorator.d.ts +2 -0
  110. package/dist/core/Nestjs/types/decorators/create-property.decorator.js +55 -0
  111. package/dist/core/Nestjs/types/decorators/create-property.decorator.js.map +1 -0
  112. package/dist/core/Nestjs/types/decorators/directive.decorator.d.ts +4 -0
  113. package/dist/core/Nestjs/types/decorators/directive.decorator.js +39 -0
  114. package/dist/core/Nestjs/types/decorators/directive.decorator.js.map +1 -0
  115. package/dist/core/Nestjs/types/decorators/extensions.decorator.d.ts +4 -0
  116. package/dist/core/Nestjs/types/decorators/extensions.decorator.js +28 -0
  117. package/dist/core/Nestjs/types/decorators/extensions.decorator.js.map +1 -0
  118. package/dist/core/Nestjs/types/decorators/field.decorator.d.ts +48 -0
  119. package/dist/core/Nestjs/types/decorators/field.decorator.js +63 -0
  120. package/dist/core/Nestjs/types/decorators/field.decorator.js.map +1 -0
  121. package/dist/core/Nestjs/types/decorators/input-type.decorator.d.ts +25 -0
  122. package/dist/core/Nestjs/types/decorators/input-type.decorator.js +29 -0
  123. package/dist/core/Nestjs/types/decorators/input-type.decorator.js.map +1 -0
  124. package/dist/core/Nestjs/types/decorators/interface-type.decorator.d.ts +33 -0
  125. package/dist/core/Nestjs/types/decorators/interface-type.decorator.js +35 -0
  126. package/dist/core/Nestjs/types/decorators/interface-type.decorator.js.map +1 -0
  127. package/dist/core/Nestjs/types/decorators/partial-type.helper.d.ts +3 -0
  128. package/dist/core/Nestjs/types/decorators/partial-type.helper.js +46 -0
  129. package/dist/core/Nestjs/types/decorators/partial-type.helper.js.map +1 -0
  130. package/dist/core/Nestjs/types/errors/cannot-determine-host-type.error.d.ts +3 -0
  131. package/dist/core/Nestjs/types/errors/cannot-determine-host-type.error.js +10 -0
  132. package/dist/core/Nestjs/types/errors/cannot-determine-host-type.error.js.map +1 -0
  133. package/dist/core/Nestjs/types/errors/directive-parsing.error.d.ts +3 -0
  134. package/dist/core/Nestjs/types/errors/directive-parsing.error.js +10 -0
  135. package/dist/core/Nestjs/types/errors/directive-parsing.error.js.map +1 -0
  136. package/dist/core/Nestjs/types/errors/unable-to-find-fields.error.d.ts +3 -0
  137. package/dist/core/Nestjs/types/errors/unable-to-find-fields.error.js +10 -0
  138. package/dist/core/Nestjs/types/errors/unable-to-find-fields.error.js.map +1 -0
  139. package/dist/core/Nestjs/types/errors/undefined-type.error.d.ts +3 -0
  140. package/dist/core/Nestjs/types/errors/undefined-type.error.js +11 -0
  141. package/dist/core/Nestjs/types/errors/undefined-type.error.js.map +1 -0
  142. package/dist/core/Nestjs/types/interfaces/add-class-type-metadata.util.d.ts +3 -0
  143. package/dist/core/Nestjs/types/interfaces/add-class-type-metadata.util.js +11 -0
  144. package/dist/core/Nestjs/types/interfaces/add-class-type-metadata.util.js.map +1 -0
  145. package/dist/core/Nestjs/types/interfaces/base-type-options.interface.d.ts +11 -0
  146. package/dist/core/Nestjs/types/interfaces/base-type-options.interface.js +3 -0
  147. package/dist/core/Nestjs/types/interfaces/base-type-options.interface.js.map +1 -0
  148. package/dist/core/Nestjs/types/interfaces/class-decorator-factory.interface.d.ts +5 -0
  149. package/dist/core/Nestjs/types/interfaces/class-decorator-factory.interface.js +3 -0
  150. package/dist/core/Nestjs/types/interfaces/class-decorator-factory.interface.js.map +1 -0
  151. package/dist/core/Nestjs/types/interfaces/complexity.interface.d.ts +11 -0
  152. package/dist/core/Nestjs/types/interfaces/complexity.interface.js +3 -0
  153. package/dist/core/Nestjs/types/interfaces/complexity.interface.js.map +1 -0
  154. package/dist/core/Nestjs/types/interfaces/field-middleware.interface.d.ts +15 -0
  155. package/dist/core/Nestjs/types/interfaces/field-middleware.interface.js +3 -0
  156. package/dist/core/Nestjs/types/interfaces/field-middleware.interface.js.map +1 -0
  157. package/dist/core/Nestjs/types/interfaces/open-api-spec.interface.d.ts +239 -0
  158. package/dist/core/Nestjs/types/interfaces/open-api-spec.interface.js +7 -0
  159. package/dist/core/Nestjs/types/interfaces/open-api-spec.interface.js.map +1 -0
  160. package/dist/core/Nestjs/types/interfaces/resolve-type-fn.interface.d.ts +2 -0
  161. package/dist/core/Nestjs/types/interfaces/resolve-type-fn.interface.js +3 -0
  162. package/dist/core/Nestjs/types/interfaces/resolve-type-fn.interface.js.map +1 -0
  163. package/dist/core/Nestjs/types/interfaces/return-type-func.interface.d.ts +5 -0
  164. package/dist/core/Nestjs/types/interfaces/return-type-func.interface.js +3 -0
  165. package/dist/core/Nestjs/types/interfaces/return-type-func.interface.js.map +1 -0
  166. package/dist/core/Nestjs/types/interfaces/schema-object-metadata.interface.d.ts +9 -0
  167. package/dist/core/Nestjs/types/interfaces/schema-object-metadata.interface.js +3 -0
  168. package/dist/core/Nestjs/types/interfaces/schema-object-metadata.interface.js.map +1 -0
  169. package/dist/core/Nestjs/types/interfaces/type-options.interface.d.ts +5 -0
  170. package/dist/core/Nestjs/types/interfaces/type-options.interface.js +3 -0
  171. package/dist/core/Nestjs/types/interfaces/type-options.interface.js.map +1 -0
  172. package/dist/core/Nestjs/types/lazy-metadata.storage.d.ts +15 -0
  173. package/dist/core/Nestjs/types/lazy-metadata.storage.js +68 -0
  174. package/dist/core/Nestjs/types/lazy-metadata.storage.js.map +1 -0
  175. package/dist/core/Nestjs/types/metadata/class.metadata.d.ts +11 -0
  176. package/dist/core/Nestjs/types/metadata/class.metadata.js +3 -0
  177. package/dist/core/Nestjs/types/metadata/class.metadata.js.map +1 -0
  178. package/dist/core/Nestjs/types/metadata/directive.metadata.d.ts +8 -0
  179. package/dist/core/Nestjs/types/metadata/directive.metadata.js +3 -0
  180. package/dist/core/Nestjs/types/metadata/directive.metadata.js.map +1 -0
  181. package/dist/core/Nestjs/types/metadata/enum.metadata.d.ts +11 -0
  182. package/dist/core/Nestjs/types/metadata/enum.metadata.js +3 -0
  183. package/dist/core/Nestjs/types/metadata/enum.metadata.js.map +1 -0
  184. package/dist/core/Nestjs/types/metadata/extensions.metadata.d.ts +8 -0
  185. package/dist/core/Nestjs/types/metadata/extensions.metadata.js +3 -0
  186. package/dist/core/Nestjs/types/metadata/extensions.metadata.js.map +1 -0
  187. package/dist/core/Nestjs/types/metadata/index.d.ts +8 -0
  188. package/dist/core/Nestjs/types/metadata/index.js +12 -0
  189. package/dist/core/Nestjs/types/metadata/index.js.map +1 -0
  190. package/dist/core/Nestjs/types/metadata/interface.metadata.d.ts +6 -0
  191. package/dist/core/Nestjs/types/metadata/interface.metadata.js +3 -0
  192. package/dist/core/Nestjs/types/metadata/interface.metadata.js.map +1 -0
  193. package/dist/core/Nestjs/types/metadata/object-type.metadata.d.ts +4 -0
  194. package/dist/core/Nestjs/types/metadata/object-type.metadata.js +3 -0
  195. package/dist/core/Nestjs/types/metadata/object-type.metadata.js.map +1 -0
  196. package/dist/core/Nestjs/types/metadata/param.metadata.d.ts +18 -0
  197. package/dist/core/Nestjs/types/metadata/param.metadata.js +3 -0
  198. package/dist/core/Nestjs/types/metadata/param.metadata.js.map +1 -0
  199. package/dist/core/Nestjs/types/metadata/property.metadata.d.ts +20 -0
  200. package/dist/core/Nestjs/types/metadata/property.metadata.js +3 -0
  201. package/dist/core/Nestjs/types/metadata/property.metadata.js.map +1 -0
  202. package/dist/core/Nestjs/types/metadata/resolver.metadata.d.ts +34 -0
  203. package/dist/core/Nestjs/types/metadata/resolver.metadata.js +3 -0
  204. package/dist/core/Nestjs/types/metadata/resolver.metadata.js.map +1 -0
  205. package/dist/core/Nestjs/types/metadata/union.metadata.d.ts +9 -0
  206. package/dist/core/Nestjs/types/metadata/union.metadata.js +3 -0
  207. package/dist/core/Nestjs/types/metadata/union.metadata.js.map +1 -0
  208. package/dist/core/Nestjs/types/object-type.decorator.d.ts +32 -0
  209. package/dist/core/Nestjs/types/object-type.decorator.js +33 -0
  210. package/dist/core/Nestjs/types/object-type.decorator.js.map +1 -0
  211. package/dist/core/Nestjs/types/omit-type.d.ts +2 -0
  212. package/dist/core/Nestjs/types/omit-type.js +34 -0
  213. package/dist/core/Nestjs/types/omit-type.js.map +1 -0
  214. package/dist/core/Nestjs/types/reflection.utils.d.ts +15 -0
  215. package/dist/core/Nestjs/types/reflection.utils.js +65 -0
  216. package/dist/core/Nestjs/types/reflection.utils.js.map +1 -0
  217. package/dist/core/Nestjs/types/set-metadata.decorator.d.ts +20 -0
  218. package/dist/core/Nestjs/types/set-metadata.decorator.js +33 -0
  219. package/dist/core/Nestjs/types/set-metadata.decorator.js.map +1 -0
  220. package/dist/core/Nestjs/types/type-metadata.storage.d.ts +73 -0
  221. package/dist/core/Nestjs/types/type-metadata.storage.js +351 -0
  222. package/dist/core/Nestjs/types/type-metadata.storage.js.map +1 -0
  223. package/dist/core/Nestjs/types/utils/enum.utils.d.ts +3 -0
  224. package/dist/core/Nestjs/types/utils/enum.utils.js +31 -0
  225. package/dist/core/Nestjs/types/utils/enum.utils.js.map +1 -0
  226. package/dist/core/Nestjs/types/utils/get-fields-and-decorator.util.d.ts +13 -0
  227. package/dist/core/Nestjs/types/utils/get-fields-and-decorator.util.js +72 -0
  228. package/dist/core/Nestjs/types/utils/get-fields-and-decorator.util.js.map +1 -0
  229. package/dist/core/Nestjs/types/utils/mapped-types.utils.d.ts +2 -0
  230. package/dist/core/Nestjs/types/utils/mapped-types.utils.js +38 -0
  231. package/dist/core/Nestjs/types/utils/mapped-types.utils.js.map +1 -0
  232. package/dist/core/Nestjs/types/utils/model-properties-accessor.d.ts +6 -0
  233. package/dist/core/Nestjs/types/utils/model-properties-accessor.js +37 -0
  234. package/dist/core/Nestjs/types/utils/model-properties-accessor.js.map +1 -0
  235. package/dist/core/Nestjs/types/utils/type-helpers.utils.d.ts +2 -0
  236. package/dist/core/Nestjs/types/utils/type-helpers.utils.js +16 -0
  237. package/dist/core/Nestjs/types/utils/type-helpers.utils.js.map +1 -0
  238. package/dist/core/types.d.ts +23 -0
  239. package/dist/core/types.js +31 -0
  240. package/dist/core/types.js.map +1 -0
  241. package/dist/decorators.d.ts +92 -0
  242. package/dist/decorators.js +162 -0
  243. package/dist/decorators.js.map +1 -0
  244. package/dist/generatorDatasource.d.ts +2 -0
  245. package/dist/generatorDatasource.js +13 -0
  246. package/dist/generatorDatasource.js.map +1 -0
  247. package/dist/index.d.ts +30 -0
  248. package/dist/index.js +50 -0
  249. package/dist/index.js.map +1 -0
  250. package/dist/loadRelations.d.ts +12 -0
  251. package/dist/loadRelations.js +139 -0
  252. package/dist/loadRelations.js.map +1 -0
  253. package/dist/outputKeys.d.ts +2 -0
  254. package/dist/outputKeys.js +18 -0
  255. package/dist/outputKeys.js.map +1 -0
  256. package/dist/tsconfig.tsbuildinfo +1 -0
  257. package/dist/types.d.ts +104 -0
  258. package/dist/types.js +23 -0
  259. package/dist/types.js.map +1 -0
  260. package/package.json +48 -24
@@ -0,0 +1,112 @@
1
+ import { Collection } from '@goatlab/js-utils';
2
+ import { FindByIdFilter, FluentHasManyParams, FluentBelongsToParams, FluentBelongsToManyParams, FluentQuery, Primitives, QueryFieldSelector, QueryOutput, AnyObject } from './types';
3
+ export declare abstract class BaseConnector<ModelDTO, InputDTO, OutputDTO> {
4
+ protected outputKeys: string[];
5
+ protected relatedQuery?: {
6
+ entity: new () => ModelDTO;
7
+ query?: FluentQuery<ModelDTO>;
8
+ repository?: any;
9
+ key?: string;
10
+ pivot?: any;
11
+ };
12
+ protected chunk: null;
13
+ protected pullSize: null;
14
+ protected paginator: undefined;
15
+ protected rawQuery: undefined;
16
+ protected modelRelations: any;
17
+ isMongoDB: boolean;
18
+ constructor();
19
+ /**
20
+ *
21
+ * @param data
22
+ */
23
+ insertMany(data: InputDTO[]): Promise<OutputDTO[]>;
24
+ /**
25
+ *
26
+ * @param id
27
+ * @param data
28
+ */
29
+ updateById(id: string, data: InputDTO): Promise<OutputDTO>;
30
+ /**
31
+ *
32
+ * @param query
33
+ */
34
+ findMany<T extends FluentQuery<ModelDTO>>(query?: T): Promise<QueryOutput<T, ModelDTO>[]>;
35
+ /**
36
+ * Executes the findMany() method and
37
+ * returns it's first result
38
+ *
39
+ * @return {Object} First result
40
+ */
41
+ findFirst<T extends FluentQuery<ModelDTO>>(query?: T): Promise<QueryOutput<T, ModelDTO> | null>;
42
+ requireById(id: string, q?: FindByIdFilter<ModelDTO>): Promise<QueryOutput<FindByIdFilter<ModelDTO>, ModelDTO>>;
43
+ requireFirst<T extends FluentQuery<ModelDTO>>(query?: T): Promise<QueryOutput<T, ModelDTO>>;
44
+ findByIds<T extends FindByIdFilter<ModelDTO>>(ids: string[], q?: T): Promise<QueryOutput<T, ModelDTO>[]>;
45
+ findById<T extends FindByIdFilter<ModelDTO>>(id: string, q?: T): Promise<QueryOutput<T, ModelDTO> | null>;
46
+ /**
47
+ *
48
+ * Gets the data in the current query and
49
+ * transforms it into a collection
50
+ * @returns {Collection} Fluent Collection
51
+ */
52
+ collect(query: FluentQuery<ModelDTO>): Promise<Collection<OutputDTO>>;
53
+ /**
54
+ * Gets all values for a given KEY
55
+ * @returns {Array}
56
+ * @param path
57
+ */
58
+ pluck(path: QueryFieldSelector<ModelDTO>, query?: FluentQuery<ModelDTO>): Promise<Primitives[]>;
59
+ /**
60
+ * Sets the relatedQuery param, to be used by the
61
+ * different LOAD methods
62
+ * @param r
63
+ */
64
+ protected setRelatedQuery(r: {
65
+ entity: new () => ModelDTO;
66
+ query?: FluentQuery<ModelDTO>;
67
+ repository?: any;
68
+ key?: string;
69
+ }): void;
70
+ /**
71
+ * Associate One-to-Many relationship.
72
+ * Associate an object to the parent.
73
+ * @param data
74
+ */
75
+ associate(data: InputDTO | OutputDTO): Promise<OutputDTO[]>;
76
+ /**
77
+ * Attach an object with Many-to-Many relation
78
+ * @param id
79
+ */
80
+ attach(id: string, pivot?: AnyObject): Promise<any[]>;
81
+ /**
82
+ * One-to-Many relationship
83
+ * To be used in the "parent" entity (One)
84
+ */
85
+ protected hasMany<T extends FluentHasManyParams<T>>(r: T): InstanceType<T['repository']>;
86
+ /**
87
+ * Inverse One-to-Many relationship
88
+ * To be used in the "children" entity (Many)
89
+ */
90
+ protected belongsTo<T extends FluentBelongsToParams<T>>(r: T): InstanceType<T['repository']>;
91
+ /**
92
+ * One-to-One model relationship
93
+ */
94
+ protected hasOne(): void;
95
+ /**
96
+ * Many-to-Many relationship
97
+ * To be used in both of the Related models (excluding pivot)
98
+ */
99
+ protected belongsToMany<T extends FluentBelongsToManyParams<T>>(r: T): InstanceType<T['repository']>;
100
+ /**
101
+ *
102
+ */
103
+ protected hasManyThrough(): void;
104
+ /**
105
+ * Maps the given Data to show only those fields
106
+ * explicitly detailed on the Select function
107
+ *
108
+ * @param {Array} data Data from local or remote DB
109
+ * @returns {Array} Formatted data with the selected columns
110
+ */
111
+ protected jsApplySelect(select: FluentQuery<ModelDTO>['select'], data: ModelDTO[]): ModelDTO[];
112
+ }
@@ -0,0 +1,343 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BaseConnector = void 0;
4
+ const js_utils_1 = require("@goatlab/js-utils");
5
+ const clearEmpties_1 = require("./TypeOrmConnector/util/clearEmpties");
6
+ class BaseConnector {
7
+ constructor() {
8
+ this.chunk = null;
9
+ this.pullSize = null;
10
+ this.paginator = undefined;
11
+ this.rawQuery = undefined;
12
+ this.chunk = null;
13
+ this.pullSize = null;
14
+ this.paginator = undefined;
15
+ this.rawQuery = undefined;
16
+ this.outputKeys = [];
17
+ }
18
+ /**
19
+ *
20
+ * @param data
21
+ */
22
+ async insertMany(data) {
23
+ throw new Error('get() method not implemented');
24
+ }
25
+ /**
26
+ *
27
+ * @param id
28
+ * @param data
29
+ */
30
+ async updateById(id, data) {
31
+ throw new Error('get() method not implemented');
32
+ }
33
+ /**
34
+ *
35
+ * @param query
36
+ */
37
+ async findMany(query) {
38
+ throw new Error('findMany() method not implemented');
39
+ }
40
+ /**
41
+ * Executes the findMany() method and
42
+ * returns it's first result
43
+ *
44
+ * @return {Object} First result
45
+ */
46
+ async findFirst(query) {
47
+ const data = await this.findMany({ ...query, limit: 1 });
48
+ if (!data[0]) {
49
+ return null;
50
+ }
51
+ return data[0];
52
+ }
53
+ async requireById(id, q) {
54
+ const found = await this.findByIds([id], {
55
+ select: q?.select,
56
+ include: q?.include,
57
+ limit: 1
58
+ });
59
+ found.map(d => {
60
+ if (this.isMongoDB) {
61
+ d['id'] = d['id'].toString();
62
+ }
63
+ (0, clearEmpties_1.clearEmpties)(js_utils_1.Objects.deleteNulls(d));
64
+ });
65
+ if (!found[0]) {
66
+ throw new Error(`Object ${id} not found`);
67
+ }
68
+ // No need to validate, as findMany already validates
69
+ return found[0];
70
+ }
71
+ async requireFirst(query) {
72
+ const found = await this.findMany({ ...query, limit: 1 });
73
+ found.map(d => {
74
+ if (this.isMongoDB) {
75
+ d['id'] = d['id'].toString();
76
+ }
77
+ (0, clearEmpties_1.clearEmpties)(js_utils_1.Objects.deleteNulls(d));
78
+ });
79
+ if (!found[0]) {
80
+ const stringQuery = query ? JSON.stringify(query) : '';
81
+ throw new Error(`No objects found matching: ${stringQuery}`);
82
+ }
83
+ // The object is already validated by findMany
84
+ return found[0];
85
+ }
86
+ async findByIds(ids, q) {
87
+ const query = {
88
+ where: {
89
+ id: {
90
+ in: ids
91
+ }
92
+ },
93
+ limit: q?.limit,
94
+ select: q?.select,
95
+ include: q?.include
96
+ };
97
+ let data = await this.findMany(query);
98
+ // The object should already be validated by FindMany
99
+ return data;
100
+ }
101
+ async findById(id, q) {
102
+ const result = await this.findByIds([id], { ...q, limit: 1 });
103
+ if (!result[0]) {
104
+ return null;
105
+ }
106
+ return result[0];
107
+ }
108
+ /**
109
+ *
110
+ * Gets the data in the current query and
111
+ * transforms it into a collection
112
+ * @returns {Collection} Fluent Collection
113
+ */
114
+ async collect(query) {
115
+ const data = await this.findMany(query);
116
+ if (!Array.isArray(data)) {
117
+ return new js_utils_1.Collection([data]);
118
+ }
119
+ return new js_utils_1.Collection(data);
120
+ }
121
+ /**
122
+ * Gets all values for a given KEY
123
+ * @returns {Array}
124
+ * @param path
125
+ */
126
+ async pluck(path, query) {
127
+ const data = await this.findMany(query);
128
+ const paths = Object.keys(js_utils_1.Objects.flatten(path));
129
+ const result = data.map(e => {
130
+ const extracted = js_utils_1.Objects.getFromPath(e, String(paths[0]), undefined);
131
+ if (typeof extracted.value !== 'undefined') {
132
+ return extracted.value;
133
+ }
134
+ });
135
+ return result;
136
+ }
137
+ /**
138
+ * Sets the relatedQuery param, to be used by the
139
+ * different LOAD methods
140
+ * @param r
141
+ */
142
+ setRelatedQuery(r) {
143
+ this.relatedQuery = r;
144
+ }
145
+ /**
146
+ * Associate One-to-Many relationship.
147
+ * Associate an object to the parent.
148
+ * @param data
149
+ */
150
+ async associate(data) {
151
+ if (!this.relatedQuery?.entity || !this.relatedQuery.key) {
152
+ throw new Error('Associate can only be called as a related model');
153
+ }
154
+ // Get ids of the Loaded query "One" side of relation
155
+ const parentData = await this.relatedQuery.repository.findMany({
156
+ ...this.relatedQuery.query,
157
+ // We just need the IDs to make the relations
158
+ select: { id: true }
159
+ });
160
+ // "Many" side of relation foreignKey
161
+ let foreignKeyName = this.relatedQuery['repository']['modelRelations'][this.relatedQuery.key]
162
+ .inverseSidePropertyPath;
163
+ if (!foreignKeyName) {
164
+ throw new Error('The relationship was not properly defined. Please check that your Repository and Model relations have the same keys');
165
+ }
166
+ const relatedData = parentData.map(r => ({
167
+ [foreignKeyName]: r.id,
168
+ ...data
169
+ }));
170
+ const existingIds = (0, clearEmpties_1.clearEmpties)(relatedData.map(r => r.id));
171
+ const existingData = existingIds.length
172
+ ? await this.findByIds(relatedData.map(r => r.id))
173
+ : [];
174
+ const updateQueries = [];
175
+ const insertQueries = [];
176
+ for (const related of relatedData) {
177
+ const exists = existingData.find((d) => {
178
+ // We need to manually define the id field
179
+ const p = d;
180
+ return p.id === related.id;
181
+ });
182
+ if (exists) {
183
+ updateQueries.push(this.updateById(exists.id, {
184
+ ...exists,
185
+ [foreignKeyName]: related[foreignKeyName]
186
+ }));
187
+ }
188
+ else {
189
+ insertQueries.push(related);
190
+ }
191
+ }
192
+ const updateResult = await Promise.all(updateQueries);
193
+ const insertedResult = await this.insertMany(insertQueries);
194
+ return [...updateResult, ...insertedResult];
195
+ }
196
+ /**
197
+ * Attach an object with Many-to-Many relation
198
+ * @param id
199
+ */
200
+ // TODO: properly type the pivot object
201
+ async attach(id, pivot) {
202
+ if (!this.relatedQuery?.entity || !this.relatedQuery.key) {
203
+ throw new Error('Associate can only be called as a related model');
204
+ }
205
+ const parentData = await this.relatedQuery.repository.findMany({
206
+ ...this.relatedQuery.query,
207
+ // We just need the IDs to make the relations
208
+ select: { id: true }
209
+ });
210
+ const foreignKeyName = this.relatedQuery['repository']['modelRelations'][this.relatedQuery.key]
211
+ .joinColumns[0].propertyPath;
212
+ const inverseKeyName = this.relatedQuery['repository']['modelRelations'][this.relatedQuery.key]
213
+ .inverseJoinColumns[0].propertyPath;
214
+ if (!foreignKeyName || !inverseKeyName) {
215
+ throw new Error(`The relationship was not properly defined. Please check that your Repository and Model relations have the same keys: Searching for: ${this.relatedQuery.key}`);
216
+ }
217
+ // TODO: insert data to the pivot table
218
+ const relatedData = parentData.map(d => ({
219
+ [foreignKeyName]: d.id,
220
+ [inverseKeyName]: id,
221
+ ...pivot
222
+ }));
223
+ return this.relatedQuery.pivot.insertMany(relatedData);
224
+ }
225
+ /**
226
+ * One-to-Many relationship
227
+ * To be used in the "parent" entity (One)
228
+ */
229
+ hasMany(r) {
230
+ const newRepo = new r.repository();
231
+ const calleeName = new Error('dummy')
232
+ .stack?.split('\n')[2] || ''
233
+ // " at functionName ( ..." => "functionName"
234
+ .replace(/^\s+at\s+(.+?)\s.+/g, '$1')
235
+ .split('.')[1];
236
+ if (this.relatedQuery) {
237
+ newRepo.setRelatedQuery({
238
+ ...this.relatedQuery,
239
+ key: calleeName
240
+ });
241
+ }
242
+ return newRepo;
243
+ }
244
+ /**
245
+ * Inverse One-to-Many relationship
246
+ * To be used in the "children" entity (Many)
247
+ */
248
+ belongsTo(r) {
249
+ return this.hasMany(r);
250
+ }
251
+ /**
252
+ * One-to-One model relationship
253
+ */
254
+ // TODO implement hasOne
255
+ hasOne() {
256
+ throw new Error('Method not implemented');
257
+ }
258
+ /**
259
+ * Many-to-Many relationship
260
+ * To be used in both of the Related models (excluding pivot)
261
+ */
262
+ belongsToMany(r) {
263
+ const newRepo = new r.repository();
264
+ // Hacky way to get the name of the callee function
265
+ const relationName = new Error('dummy')
266
+ .stack?.split('\n')[2] || ''
267
+ // " at functionName ( ..." => "functionName"
268
+ .replace(/^\s+at\s+(.+?)\s.+/g, '$1')
269
+ .split('.')[1];
270
+ const pivot = new r.pivot();
271
+ pivot.setRelatedQuery({
272
+ ...this.relatedQuery,
273
+ key: relationName
274
+ });
275
+ if (this.relatedQuery) {
276
+ newRepo.setRelatedQuery({
277
+ ...this.relatedQuery,
278
+ key: relationName,
279
+ pivot
280
+ });
281
+ }
282
+ else {
283
+ newRepo.setRelatedQuery({
284
+ key: relationName,
285
+ pivot
286
+ });
287
+ }
288
+ // this.relationQuery.relations[relationName]
289
+ return newRepo;
290
+ }
291
+ /**
292
+ *
293
+ */
294
+ // TODO implement hasManyThrough
295
+ hasManyThrough() {
296
+ throw new Error('Method not implemented');
297
+ }
298
+ /**
299
+ * Maps the given Data to show only those fields
300
+ * explicitly detailed on the Select function
301
+ *
302
+ * @param {Array} data Data from local or remote DB
303
+ * @returns {Array} Formatted data with the selected columns
304
+ */
305
+ jsApplySelect(select, data) {
306
+ const _data = Array.isArray(data) ? [...data] : [data];
307
+ if (!select) {
308
+ return data;
309
+ }
310
+ const selectedAttributes = Object.keys(js_utils_1.Objects.flatten(select));
311
+ const iterationArray = this.outputKeys.length === 0 && selectedAttributes.length > 0
312
+ ? selectedAttributes
313
+ : [...this.outputKeys];
314
+ const compareArray = this.outputKeys.length === 0 && selectedAttributes.length > 0
315
+ ? [...this.outputKeys]
316
+ : selectedAttributes;
317
+ return _data.map(element => {
318
+ const newElement = {};
319
+ iterationArray.forEach(attribute => {
320
+ if (compareArray.length > 0 && !compareArray.includes(attribute)) {
321
+ return undefined;
322
+ }
323
+ const extract = js_utils_1.Objects.getFromPath(element, attribute, undefined);
324
+ let value = js_utils_1.Objects.get(() => extract.value, undefined);
325
+ if (typeof value !== 'undefined' && value !== null) {
326
+ if (typeof value === 'object' &&
327
+ value.hasOwnProperty('data') &&
328
+ value.data.hasOwnProperty('name')) {
329
+ newElement[extract.label] = value.data.name;
330
+ }
331
+ else {
332
+ // Skip ObjectId conversion for now to fix build
333
+ // TODO: Implement proper ObjectId handling
334
+ newElement[extract.label] = value;
335
+ }
336
+ }
337
+ });
338
+ return js_utils_1.Objects.nest(newElement);
339
+ });
340
+ }
341
+ }
342
+ exports.BaseConnector = BaseConnector;
343
+ //# sourceMappingURL=BaseConnector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseConnector.js","sourceRoot":"","sources":["../src/BaseConnector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { DataSource } from 'typeorm';
2
+ import { AnyObject, Primitives } from './types';
3
+ import { Collection } from '@goatlab/js-utils';
4
+ export declare class Fluent {
5
+ /**
6
+ *
7
+ * @param args
8
+ */
9
+ static collect<T = AnyObject | Primitives>(data: T[]): Collection<T>;
10
+ static initialize(dataSources: DataSource[], Entities: any[]): Promise<void>;
11
+ }
package/dist/Fluent.js ADDED
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Fluent = void 0;
4
+ const js_utils_1 = require("@goatlab/js-utils");
5
+ const generatorDatasource_1 = require("./generatorDatasource");
6
+ class Fluent {
7
+ /**
8
+ *
9
+ * @param args
10
+ */
11
+ static collect(data) {
12
+ return new js_utils_1.Collection(data);
13
+ }
14
+ static async initialize(dataSources, Entities) {
15
+ generatorDatasource_1.modelGeneratorDataSource.setOptions({ entities: Entities });
16
+ if (!generatorDatasource_1.modelGeneratorDataSource.isInitialized) {
17
+ await generatorDatasource_1.modelGeneratorDataSource.initialize();
18
+ }
19
+ for (const dataSource of dataSources) {
20
+ if (!dataSource.isInitialized) {
21
+ await dataSource.initialize();
22
+ }
23
+ }
24
+ }
25
+ }
26
+ exports.Fluent = Fluent;
27
+ //# sourceMappingURL=Fluent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Fluent.js","sourceRoot":"","sources":["../src/Fluent.ts"],"names":[],"mappings":";;;AAEA,gDAA8C;AAC9C,+DAAgE;AAEhE,MAAa,MAAM;IACjB;;;OAGG;IACI,MAAM,CAAC,OAAO,CAA6B,IAAS;QACzD,OAAO,IAAI,qBAAU,CAAI,IAAI,CAAC,CAAA;IAChC,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,UAAU,CAC5B,WAAyB,EACzB,QAAe;QAEf,8CAAwB,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAA;QAC3D,IAAI,CAAC,8CAAwB,CAAC,aAAa,EAAE,CAAC;YAC5C,MAAM,8CAAwB,CAAC,UAAU,EAAE,CAAA;QAC7C,CAAC;QAED,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACrC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;gBAC9B,MAAM,UAAU,CAAC,UAAU,EAAE,CAAA;YAC/B,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAxBD,wBAwBC"}
@@ -0,0 +1,17 @@
1
+ import { FindByIdFilter, FluentQuery, QueryOutput } from './types';
2
+ export interface FluentConnectorInterface<ModelDTO, InputDTO, OutputDTO> {
3
+ insert(data: InputDTO): Promise<OutputDTO>;
4
+ insertMany(data: InputDTO[]): Promise<OutputDTO[]>;
5
+ findById<T extends FindByIdFilter<ModelDTO>>(id: string, q?: T): Promise<QueryOutput<T, ModelDTO> | null>;
6
+ findByIds<T extends FindByIdFilter<ModelDTO>>(ids: string[], q?: T): Promise<QueryOutput<T, ModelDTO>[]>;
7
+ findMany<T extends FluentQuery<ModelDTO>>(query?: T): Promise<QueryOutput<T, ModelDTO>[]>;
8
+ findFirst<T extends FluentQuery<ModelDTO>>(query?: T): Promise<QueryOutput<T, ModelDTO> | null>;
9
+ requireById(id: string, q?: FindByIdFilter<ModelDTO>): Promise<QueryOutput<FindByIdFilter<ModelDTO>, ModelDTO>>;
10
+ requireFirst<T extends FluentQuery<ModelDTO>>(query?: T): Promise<QueryOutput<T, ModelDTO>>;
11
+ updateById(id: string, data: InputDTO): Promise<OutputDTO>;
12
+ replaceById(id: string, data: InputDTO): Promise<OutputDTO>;
13
+ deleteById(id: string): Promise<string>;
14
+ loadFirst(query?: FluentQuery<ModelDTO>): any;
15
+ loadById(id: string): any;
16
+ raw(): any;
17
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=FluentConnectorInterface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FluentConnectorInterface.js","sourceRoot":"","sources":["../src/FluentConnectorInterface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,7 @@
1
+ export declare class FluentEntity {
2
+ type?: string;
3
+ roles?: string[];
4
+ created?: Date;
5
+ updated?: Date;
6
+ deleted?: Date;
7
+ }
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FluentEntity = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const decorators_1 = require("./decorators");
6
+ class FluentEntity {
7
+ }
8
+ exports.FluentEntity = FluentEntity;
9
+ tslib_1.__decorate([
10
+ decorators_1.f.property({ required: false }),
11
+ tslib_1.__metadata("design:type", String)
12
+ ], FluentEntity.prototype, "type", void 0);
13
+ tslib_1.__decorate([
14
+ decorators_1.f.stringArray(String, { required: false }),
15
+ tslib_1.__metadata("design:type", Array)
16
+ ], FluentEntity.prototype, "roles", void 0);
17
+ tslib_1.__decorate([
18
+ decorators_1.f.created(),
19
+ tslib_1.__metadata("design:type", Date)
20
+ ], FluentEntity.prototype, "created", void 0);
21
+ tslib_1.__decorate([
22
+ decorators_1.f.updated(),
23
+ tslib_1.__metadata("design:type", Date)
24
+ ], FluentEntity.prototype, "updated", void 0);
25
+ tslib_1.__decorate([
26
+ decorators_1.f.deleted(),
27
+ tslib_1.__metadata("design:type", Date)
28
+ ], FluentEntity.prototype, "deleted", void 0);
29
+ //# sourceMappingURL=FluentEntity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FluentEntity.js","sourceRoot":"","sources":["../src/FluentEntity.ts"],"names":[],"mappings":";;;;AAAA,6CAAgC;AAEhC,MAAa,YAAY;CAexB;AAfD,oCAeC;AAbC;IADC,cAAC,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;;0CACnB;AAGb;IADC,cAAC,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;;2CAC3B;AAGhB;IADC,cAAC,CAAC,OAAO,EAAE;sCACF,IAAI;6CAAA;AAGd;IADC,cAAC,CAAC,OAAO,EAAE;sCACF,IAAI;6CAAA;AAGd;IADC,cAAC,CAAC,OAAO,EAAE;sCACF,IAAI;6CAAA"}