@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,93 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.waitForConnection = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const docker_1 = tslib_1.__importDefault(require("./docker"));
6
+ const mongodb_1 = require("mongodb");
7
+ const DEFAULT_IMAGE = 'mongo:6.0.1';
8
+ const DEFAULT_CONTAINER_NAME = `fluent-${DEFAULT_IMAGE.replace(':', '-')}-test`;
9
+ const DEFAULT_CONNECT_TIMEOUT_SECONDS = 10;
10
+ const DEFAULT_MONGO_PORT = 27017;
11
+ const DEFAULT_MONGO_USER = 'test-user';
12
+ const DEFAULT_MONGO_PASSWORD = 'password';
13
+ const DEFAULT_MONGO_DB = 'test-db';
14
+ const DEFAULT_MONGO_DEBUG = false;
15
+ async function waitForConnection(databaseURL, timeoutSeconds) {
16
+ const start = Date.now();
17
+ const timeoutMilliseconds = timeoutSeconds * 1000;
18
+ let lastAttempt = false;
19
+ while (true) {
20
+ await new Promise(resolve => setTimeout(resolve, 1000));
21
+ const conn = new mongodb_1.MongoClient(databaseURL);
22
+ try {
23
+ try {
24
+ await conn.connect();
25
+ const db = conn.db('anyDB');
26
+ const result = await db.command({
27
+ ping: 1
28
+ });
29
+ if (result.ok) {
30
+ break;
31
+ }
32
+ else {
33
+ if (lastAttempt) {
34
+ throw new Error('Got unexpected result: ' + JSON.stringify(result));
35
+ }
36
+ }
37
+ }
38
+ catch (ex) {
39
+ console.log(ex);
40
+ if (lastAttempt) {
41
+ throw ex;
42
+ }
43
+ }
44
+ }
45
+ finally {
46
+ await conn.close();
47
+ }
48
+ if (Date.now() - timeoutMilliseconds > start) {
49
+ lastAttempt = true;
50
+ }
51
+ }
52
+ }
53
+ exports.waitForConnection = waitForConnection;
54
+ async function getDatabase(options = {}) {
55
+ const { mongoUser, mongoPassword, mongoDb, environment, ...rawOptions } = {
56
+ debug: DEFAULT_MONGO_DEBUG,
57
+ image: DEFAULT_IMAGE,
58
+ containerName: DEFAULT_CONTAINER_NAME,
59
+ connectTimeoutSeconds: DEFAULT_CONNECT_TIMEOUT_SECONDS,
60
+ mongoUser: DEFAULT_MONGO_USER,
61
+ mongoPassword: DEFAULT_MONGO_PASSWORD,
62
+ mongoDb: DEFAULT_MONGO_DB,
63
+ defaultExternalPort: DEFAULT_MONGO_PORT,
64
+ ...options
65
+ };
66
+ const { proc, externalPort, kill } = await (0, docker_1.default)({
67
+ ...rawOptions,
68
+ internalPort: DEFAULT_MONGO_PORT,
69
+ environment: {
70
+ MONGO_HOST: '127.0.0.1',
71
+ ...environment,
72
+ MONGO_INITDB_ROOT_USERNAME: mongoUser,
73
+ MONGO_INITDB_ROOT_PASSWORD: mongoPassword,
74
+ MONGO_DB_USER: mongoUser,
75
+ MONGO_DB_PASSWORD: mongoPassword,
76
+ MONGO_PASSWORD: mongoPassword,
77
+ MONGO_INITDB_DATABASE: mongoDb
78
+ },
79
+ enableDebugInstructions: `To view logs, run with MONGO_TEST_DEBUG=true environment variable.`
80
+ });
81
+ const databaseURL = `mongodb://${mongoUser}:${mongoPassword}@localhost:${externalPort}`;
82
+ await waitForConnection(databaseURL, rawOptions.connectTimeoutSeconds);
83
+ return {
84
+ proc,
85
+ databaseURL,
86
+ kill,
87
+ user: mongoUser,
88
+ password: mongoPassword,
89
+ port: externalPort,
90
+ dbName: mongoDb
91
+ };
92
+ }
93
+ exports.default = getDatabase;
@@ -0,0 +1,17 @@
1
+ import { Options as WithContainerOptions } from './docker';
2
+ export interface Options extends Omit<WithContainerOptions, 'internalPort' | 'enableDebugInstructions' | 'testConnection'> {
3
+ mysqlUser: string;
4
+ mysqlPassword: string;
5
+ mysqlDb: string;
6
+ }
7
+ export declare function waitForConnection(databaseURL: string, timeoutSeconds: number): Promise<void>;
8
+ export declare function killDatabase(options?: Partial<Options>): Promise<void>;
9
+ export default function getDatabase(options?: Partial<Options>): Promise<{
10
+ proc: any;
11
+ databaseURL: string;
12
+ kill: () => Promise<void>;
13
+ user: string;
14
+ password: string;
15
+ port: number;
16
+ dbName: string;
17
+ }>;
@@ -0,0 +1,132 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.killDatabase = exports.waitForConnection = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const docker_1 = tslib_1.__importStar(require("./docker"));
6
+ const { createConnection } = require('mysql2');
7
+ const DEFAULT_IMAGE = 'mysql:8.0';
8
+ const DEFAULT_CONTAINER_NAME = `fluent-${DEFAULT_IMAGE.replace(':', '-')}-test`;
9
+ const DEFAULT_CONNECT_TIMEOUT_SECONDS = 10;
10
+ const DEFAULT_MYSQL_PORT = 3306;
11
+ const DEFAULT_MYSQL_USER = 'test-user';
12
+ const DEFAULT_MYSQL_PASSWORD = 'password';
13
+ const DEFAULT_MYSQL_DB = 'test-db';
14
+ const DEFAULT_MYSQL_DEBUG = false;
15
+ async function waitForConnection(databaseURL, timeoutSeconds) {
16
+ const start = Date.now();
17
+ const timeoutMilliseconds = timeoutSeconds * 1000;
18
+ let lastAttempt = false;
19
+ while (true) {
20
+ await new Promise((resolve) => setTimeout(resolve, 1000));
21
+ let conn;
22
+ try {
23
+ try {
24
+ await new Promise((resolve, reject) => {
25
+ let errored = false;
26
+ conn = createConnection(databaseURL);
27
+ const createConnectionErr = new Error();
28
+ conn.once('connect', () => {
29
+ resolve();
30
+ });
31
+ conn.on('error', (err) => {
32
+ if (errored)
33
+ return;
34
+ errored = true;
35
+ createConnectionErr.message = err.message;
36
+ createConnectionErr.code = err.code;
37
+ createConnectionErr.errno = err.errno;
38
+ createConnectionErr.sqlState = err.sqlState;
39
+ reject(createConnectionErr);
40
+ });
41
+ });
42
+ const result = await new Promise((resolve, reject) => {
43
+ const queryErr = new Error();
44
+ conn.query(`SELECT 1 + 1 AS foo;`, (err, result) => {
45
+ if (err) {
46
+ queryErr.message = err.message;
47
+ reject(queryErr);
48
+ }
49
+ else {
50
+ resolve(result);
51
+ }
52
+ });
53
+ });
54
+ if (result && result[0] && result[0].foo === 2) {
55
+ break;
56
+ }
57
+ else {
58
+ if (lastAttempt) {
59
+ throw new Error('Got unexpected result: ' + JSON.stringify(result));
60
+ }
61
+ }
62
+ }
63
+ catch (ex) {
64
+ if (lastAttempt) {
65
+ throw ex;
66
+ }
67
+ }
68
+ }
69
+ finally {
70
+ conn.end(() => {
71
+ });
72
+ }
73
+ if (Date.now() - timeoutMilliseconds > start) {
74
+ lastAttempt = true;
75
+ }
76
+ }
77
+ }
78
+ exports.waitForConnection = waitForConnection;
79
+ async function killDatabase(options = {}) {
80
+ await (0, docker_1.killOldContainers)({
81
+ debug: DEFAULT_MYSQL_DEBUG,
82
+ containerName: DEFAULT_CONTAINER_NAME,
83
+ ...options,
84
+ });
85
+ }
86
+ exports.killDatabase = killDatabase;
87
+ async function getDatabase(options = {}) {
88
+ const { mysqlUser, mysqlPassword, mysqlDb, environment, ...rawOptions } = {
89
+ debug: DEFAULT_MYSQL_DEBUG,
90
+ image: DEFAULT_IMAGE,
91
+ containerName: DEFAULT_CONTAINER_NAME,
92
+ connectTimeoutSeconds: DEFAULT_CONNECT_TIMEOUT_SECONDS,
93
+ mysqlUser: DEFAULT_MYSQL_USER,
94
+ mysqlPassword: DEFAULT_MYSQL_PASSWORD,
95
+ mysqlDb: DEFAULT_MYSQL_DB,
96
+ defaultExternalPort: DEFAULT_MYSQL_PORT,
97
+ ...options,
98
+ };
99
+ const { proc, externalPort, kill } = await (0, docker_1.default)({
100
+ ...rawOptions,
101
+ internalPort: DEFAULT_MYSQL_PORT,
102
+ environment: {
103
+ MYSQL_ALLOW_EMPTY_PASSWORD: 'true',
104
+ MYSQL_HOST: '127.0.0.1',
105
+ MYSQL_ROOT_HOST: '%',
106
+ ...environment,
107
+ MYSQL_USER: mysqlUser,
108
+ MYSQL_ROOT_PASSWORD: mysqlPassword,
109
+ MYSQL_PASSWORD: mysqlPassword,
110
+ MYSQL_DATABASE: mysqlDb,
111
+ },
112
+ enableDebugInstructions: `To view logs, run with MYSQL_TEST_DEBUG=true environment variable.`,
113
+ command: [
114
+ '--default_authentication_plugin=mysql_native_password',
115
+ '--character-set-server=utf8mb4',
116
+ '--collation-server=utf8mb4_unicode_ci'
117
+ ],
118
+ cap_add: 'SYS_NICE'
119
+ });
120
+ const databaseURL = `mysql://${mysqlUser}:${mysqlPassword}@localhost:${externalPort}/${mysqlDb}`;
121
+ await waitForConnection(databaseURL, rawOptions.connectTimeoutSeconds);
122
+ return {
123
+ proc,
124
+ databaseURL,
125
+ kill,
126
+ user: mysqlUser,
127
+ password: mysqlPassword,
128
+ port: externalPort,
129
+ dbName: mysqlDb
130
+ };
131
+ }
132
+ exports.default = getDatabase;
@@ -0,0 +1,4 @@
1
+ export declare const flock: {
2
+ age: number;
3
+ name: string;
4
+ }[];
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.flock = void 0;
4
+ exports.flock = [
5
+ {
6
+ age: 3,
7
+ name: 'Goatee'
8
+ },
9
+ {
10
+ age: 4,
11
+ name: 'GoaToHell'
12
+ },
13
+ {
14
+ age: 5,
15
+ name: 'Oh!MyGoat'
16
+ },
17
+ {
18
+ age: 3,
19
+ name: 'A'
20
+ },
21
+ {
22
+ age: 2,
23
+ name: 'B'
24
+ }
25
+ ];
@@ -0,0 +1,10 @@
1
+ import { TypeOrmConnector } from '../../TypeOrmConnector';
2
+ import { CarsEntity } from '../relations/car/car.entity';
3
+ import { CarDtoOutput } from '../relations/car/car.output.schema';
4
+ import { CarDtoInput } from '../relations/car/car.schema';
5
+ import { UserRepository } from './user.mongo.repository';
6
+ export declare class CarsRepository extends TypeOrmConnector<CarsEntity, CarDtoInput, CarDtoOutput> {
7
+ constructor();
8
+ user: () => UserRepository;
9
+ anotherRelation: () => UserRepository;
10
+ }
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CarsRepository = void 0;
4
+ const TypeOrmConnector_1 = require("../../TypeOrmConnector");
5
+ const car_entity_1 = require("../relations/car/car.entity");
6
+ const car_output_schema_1 = require("../relations/car/car.output.schema");
7
+ const car_schema_1 = require("../relations/car/car.schema");
8
+ const user_entity_1 = require("../relations/user/user.entity");
9
+ const mongoDatasource_1 = require("./mongoDatasource");
10
+ const user_mongo_repository_1 = require("./user.mongo.repository");
11
+ class CarsRepository extends TypeOrmConnector_1.TypeOrmConnector {
12
+ constructor() {
13
+ super({
14
+ entity: car_entity_1.CarsEntity,
15
+ dataSource: mongoDatasource_1.MongoDataSource,
16
+ inputSchema: car_schema_1.carInputSchema,
17
+ outputSchema: car_output_schema_1.carOutputSchema
18
+ });
19
+ this.user = () => this.belongsTo({
20
+ repository: user_mongo_repository_1.UserRepository,
21
+ model: user_entity_1.UsersEntity
22
+ });
23
+ this.anotherRelation = () => this.belongsTo({
24
+ repository: user_mongo_repository_1.UserRepository
25
+ });
26
+ }
27
+ }
28
+ exports.CarsRepository = CarsRepository;
@@ -0,0 +1,2 @@
1
+ import { DataSource } from 'typeorm';
2
+ export declare const MongoDataSource: DataSource;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MongoDataSource = void 0;
4
+ const typeorm_1 = require("typeorm");
5
+ const dbEntities_1 = require("../dbEntities");
6
+ exports.MongoDataSource = new typeorm_1.DataSource({
7
+ type: 'mongodb',
8
+ useNewUrlParser: true,
9
+ useUnifiedTopology: true,
10
+ entities: dbEntities_1.dbEntities,
11
+ logging: false
12
+ });
@@ -0,0 +1,9 @@
1
+ import { TypeOrmConnector } from '../../TypeOrmConnector';
2
+ import { RoleDtoInput } from '../relations/roles/role.schema';
3
+ import { RoleEntity } from '../relations/roles/roles.entity';
4
+ import { UserRepository } from './user.mongo.repository';
5
+ import { RoleDtoOut } from '../relations/roles/role.output.schema';
6
+ export declare class RoleRepository extends TypeOrmConnector<RoleEntity, RoleDtoInput, RoleDtoOut> {
7
+ constructor();
8
+ users: () => UserRepository;
9
+ }
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RoleRepository = void 0;
4
+ const TypeOrmConnector_1 = require("../../TypeOrmConnector");
5
+ const role_schema_1 = require("../relations/roles/role.schema");
6
+ const roles_user_mongo_repository_1 = require("./roles_user.mongo.repository");
7
+ const roles_entity_1 = require("../relations/roles/roles.entity");
8
+ const mongoDatasource_1 = require("./mongoDatasource");
9
+ const user_mongo_repository_1 = require("./user.mongo.repository");
10
+ const role_output_schema_1 = require("../relations/roles/role.output.schema");
11
+ class RoleRepository extends TypeOrmConnector_1.TypeOrmConnector {
12
+ constructor() {
13
+ super({
14
+ entity: roles_entity_1.RoleEntity,
15
+ dataSource: mongoDatasource_1.MongoDataSource,
16
+ inputSchema: role_schema_1.RoleInputSchema,
17
+ outputSchema: role_output_schema_1.RoleOuputSchema
18
+ });
19
+ this.users = () => this.belongsToMany({
20
+ repository: user_mongo_repository_1.UserRepository,
21
+ pivot: roles_user_mongo_repository_1.RoleUsersRepository
22
+ });
23
+ }
24
+ }
25
+ exports.RoleRepository = RoleRepository;
@@ -0,0 +1,6 @@
1
+ import { RolesUser } from '../relations/roles/roles_user.entity';
2
+ import { RolesUserInputSchema } from '../relations/roles/roles_user.schema';
3
+ import { TypeOrmConnector } from '../../TypeOrmConnector';
4
+ export declare class RoleUsersRepository extends TypeOrmConnector<RolesUser, RolesUserInputSchema> {
5
+ constructor();
6
+ }
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RoleUsersRepository = void 0;
4
+ const roles_user_entity_1 = require("../relations/roles/roles_user.entity");
5
+ const roles_user_schema_1 = require("../relations/roles/roles_user.schema");
6
+ const TypeOrmConnector_1 = require("../../TypeOrmConnector");
7
+ const mongoDatasource_1 = require("./mongoDatasource");
8
+ class RoleUsersRepository extends TypeOrmConnector_1.TypeOrmConnector {
9
+ constructor() {
10
+ super({
11
+ entity: roles_user_entity_1.RolesUser,
12
+ dataSource: mongoDatasource_1.MongoDataSource,
13
+ inputSchema: roles_user_schema_1.RolesUserSchema
14
+ });
15
+ }
16
+ }
17
+ exports.RoleUsersRepository = RoleUsersRepository;
@@ -0,0 +1,10 @@
1
+ import { TypeOrmConnector } from '../../TypeOrmConnector';
2
+ import { UsersEntity } from '../relations/user/user.entity';
3
+ import { UsersDtoIn, UsersDtoOut } from '../relations/user/user.schema';
4
+ import { CarsRepository } from './car.mongo.repository';
5
+ import { RoleRepository } from './roles.mongo.repository';
6
+ export declare class UserRepository extends TypeOrmConnector<UsersEntity, UsersDtoIn, UsersDtoOut> {
7
+ constructor();
8
+ cars: () => CarsRepository;
9
+ roles: () => RoleRepository;
10
+ }
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UserRepository = void 0;
4
+ const TypeOrmConnector_1 = require("../../TypeOrmConnector");
5
+ const car_entity_1 = require("../relations/car/car.entity");
6
+ const user_entity_1 = require("../relations/user/user.entity");
7
+ const user_schema_1 = require("../relations/user/user.schema");
8
+ const car_mongo_repository_1 = require("./car.mongo.repository");
9
+ const mongoDatasource_1 = require("./mongoDatasource");
10
+ const roles_mongo_repository_1 = require("./roles.mongo.repository");
11
+ const roles_user_mongo_repository_1 = require("./roles_user.mongo.repository");
12
+ class UserRepository extends TypeOrmConnector_1.TypeOrmConnector {
13
+ constructor() {
14
+ super({
15
+ entity: user_entity_1.UsersEntity,
16
+ dataSource: mongoDatasource_1.MongoDataSource,
17
+ inputSchema: user_schema_1.userInputSchema,
18
+ outputSchema: user_schema_1.userOutputSchema
19
+ });
20
+ this.cars = () => {
21
+ return this.hasMany({
22
+ repository: car_mongo_repository_1.CarsRepository,
23
+ model: car_entity_1.CarsEntity
24
+ });
25
+ };
26
+ this.roles = () => this.belongsToMany({
27
+ repository: roles_mongo_repository_1.RoleRepository,
28
+ pivot: roles_user_mongo_repository_1.RoleUsersRepository
29
+ });
30
+ }
31
+ }
32
+ exports.UserRepository = UserRepository;
@@ -0,0 +1,10 @@
1
+ import { TypeOrmConnector } from '../../TypeOrmConnector';
2
+ import { CarsEntity } from '../relations/car/car.entity';
3
+ import { CarDtoOutput } from '../relations/car/car.output.schema';
4
+ import { CarDtoInput } from '../relations/car/car.schema';
5
+ import { UserRepository } from './user.mysql.repository';
6
+ export declare class CarsRepository extends TypeOrmConnector<CarsEntity, CarDtoInput, CarDtoOutput> {
7
+ constructor();
8
+ user: () => UserRepository;
9
+ anotherRelation: () => UserRepository;
10
+ }
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CarsRepository = void 0;
4
+ const TypeOrmConnector_1 = require("../../TypeOrmConnector");
5
+ const car_entity_1 = require("../relations/car/car.entity");
6
+ const car_output_schema_1 = require("../relations/car/car.output.schema");
7
+ const car_schema_1 = require("../relations/car/car.schema");
8
+ const mysqlDataSource_1 = require("./mysqlDataSource");
9
+ const user_mysql_repository_1 = require("./user.mysql.repository");
10
+ class CarsRepository extends TypeOrmConnector_1.TypeOrmConnector {
11
+ constructor() {
12
+ super({
13
+ entity: car_entity_1.CarsEntity,
14
+ dataSource: mysqlDataSource_1.MYSQLDataSource,
15
+ inputSchema: car_schema_1.carInputSchema,
16
+ outputSchema: car_output_schema_1.carOutputSchema
17
+ });
18
+ this.user = () => this.belongsTo({
19
+ repository: user_mysql_repository_1.UserRepository
20
+ });
21
+ this.anotherRelation = () => this.belongsTo({
22
+ repository: user_mysql_repository_1.UserRepository
23
+ });
24
+ }
25
+ }
26
+ exports.CarsRepository = CarsRepository;
@@ -0,0 +1,2 @@
1
+ import { DataSource } from 'typeorm';
2
+ export declare const MYSQLDataSource: DataSource;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MYSQLDataSource = void 0;
4
+ const typeorm_1 = require("typeorm");
5
+ const dbEntities_1 = require("../dbEntities");
6
+ exports.MYSQLDataSource = new typeorm_1.DataSource({
7
+ type: 'mysql',
8
+ database: 'test-db',
9
+ username: 'root',
10
+ password: 'password',
11
+ host: '127.0.0.1',
12
+ port: 3306,
13
+ entities: dbEntities_1.dbEntities,
14
+ synchronize: true,
15
+ logging: false
16
+ });
@@ -0,0 +1,9 @@
1
+ import { TypeOrmConnector } from '../../TypeOrmConnector';
2
+ import { RoleDtoInput } from '../relations/roles/role.schema';
3
+ import { RoleEntity } from '../relations/roles/roles.entity';
4
+ import { UserRepository } from './user.mysql.repository';
5
+ import { RoleDtoOut } from '../relations/roles/role.output.schema';
6
+ export declare class RoleRepository extends TypeOrmConnector<RoleEntity, RoleDtoInput, RoleDtoOut> {
7
+ constructor();
8
+ users: () => UserRepository;
9
+ }
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RoleRepository = void 0;
4
+ const TypeOrmConnector_1 = require("../../TypeOrmConnector");
5
+ const role_schema_1 = require("../relations/roles/role.schema");
6
+ const roles_entity_1 = require("../relations/roles/roles.entity");
7
+ const mysqlDataSource_1 = require("./mysqlDataSource");
8
+ const user_mysql_repository_1 = require("./user.mysql.repository");
9
+ const roles_user_mysql_repository_1 = require("./roles_user.mysql.repository");
10
+ const role_output_schema_1 = require("../relations/roles/role.output.schema");
11
+ class RoleRepository extends TypeOrmConnector_1.TypeOrmConnector {
12
+ constructor() {
13
+ super({
14
+ entity: roles_entity_1.RoleEntity,
15
+ dataSource: mysqlDataSource_1.MYSQLDataSource,
16
+ inputSchema: role_schema_1.RoleInputSchema,
17
+ outputSchema: role_output_schema_1.RoleOuputSchema
18
+ });
19
+ this.users = () => this.belongsToMany({
20
+ repository: user_mysql_repository_1.UserRepository,
21
+ pivot: roles_user_mysql_repository_1.RoleUsersRepository
22
+ });
23
+ }
24
+ }
25
+ exports.RoleRepository = RoleRepository;
@@ -0,0 +1,6 @@
1
+ import { RolesUser } from '../relations/roles/roles_user.entity';
2
+ import { RolesUserInputSchema } from '../relations/roles/roles_user.schema';
3
+ import { TypeOrmConnector } from '../../TypeOrmConnector';
4
+ export declare class RoleUsersRepository extends TypeOrmConnector<RolesUser, RolesUserInputSchema> {
5
+ constructor();
6
+ }
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RoleUsersRepository = void 0;
4
+ const roles_user_entity_1 = require("../relations/roles/roles_user.entity");
5
+ const roles_user_schema_1 = require("../relations/roles/roles_user.schema");
6
+ const TypeOrmConnector_1 = require("../../TypeOrmConnector");
7
+ const mysqlDataSource_1 = require("./mysqlDataSource");
8
+ class RoleUsersRepository extends TypeOrmConnector_1.TypeOrmConnector {
9
+ constructor() {
10
+ super({
11
+ entity: roles_user_entity_1.RolesUser,
12
+ dataSource: mysqlDataSource_1.MYSQLDataSource,
13
+ inputSchema: roles_user_schema_1.RolesUserSchema
14
+ });
15
+ }
16
+ }
17
+ exports.RoleUsersRepository = RoleUsersRepository;
@@ -0,0 +1,10 @@
1
+ import { TypeOrmConnector } from '../../TypeOrmConnector';
2
+ import { UsersEntity } from '../relations/user/user.entity';
3
+ import { UsersDtoIn, UsersDtoOut } from '../relations/user/user.schema';
4
+ import { CarsRepository } from './car.mysql.repository';
5
+ import { RoleRepository } from './roles.mysql.repository';
6
+ export declare class UserRepository extends TypeOrmConnector<UsersEntity, UsersDtoIn, UsersDtoOut> {
7
+ constructor();
8
+ cars: () => CarsRepository;
9
+ roles: () => RoleRepository;
10
+ }
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UserRepository = void 0;
4
+ const TypeOrmConnector_1 = require("../../TypeOrmConnector");
5
+ const car_entity_1 = require("../relations/car/car.entity");
6
+ const user_entity_1 = require("../relations/user/user.entity");
7
+ const user_schema_1 = require("../relations/user/user.schema");
8
+ const car_mysql_repository_1 = require("./car.mysql.repository");
9
+ const mysqlDataSource_1 = require("./mysqlDataSource");
10
+ const roles_mysql_repository_1 = require("./roles.mysql.repository");
11
+ const roles_user_mysql_repository_1 = require("./roles_user.mysql.repository");
12
+ class UserRepository extends TypeOrmConnector_1.TypeOrmConnector {
13
+ constructor() {
14
+ super({
15
+ entity: user_entity_1.UsersEntity,
16
+ dataSource: mysqlDataSource_1.MYSQLDataSource,
17
+ inputSchema: user_schema_1.userInputSchema,
18
+ outputSchema: user_schema_1.userOutputSchema
19
+ });
20
+ this.cars = () => {
21
+ return this.hasMany({
22
+ repository: car_mysql_repository_1.CarsRepository,
23
+ model: car_entity_1.CarsEntity,
24
+ relationKey: { user: true }
25
+ });
26
+ };
27
+ this.roles = () => this.belongsToMany({
28
+ repository: roles_mysql_repository_1.RoleRepository,
29
+ pivot: roles_user_mysql_repository_1.RoleUsersRepository
30
+ });
31
+ }
32
+ }
33
+ exports.UserRepository = UserRepository;
@@ -0,0 +1,7 @@
1
+ import { UsersEntity } from '../user/user.entity';
2
+ export declare class CarsEntity {
3
+ id: string;
4
+ name: string;
5
+ userId?: string;
6
+ user?: UsersEntity;
7
+ }
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CarsEntity = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const decorators_1 = require("../../../../decorators");
6
+ const user_entity_1 = require("../user/user.entity");
7
+ let CarsEntity = class CarsEntity {
8
+ };
9
+ tslib_1.__decorate([
10
+ decorators_1.f.id(),
11
+ tslib_1.__metadata("design:type", String)
12
+ ], CarsEntity.prototype, "id", void 0);
13
+ tslib_1.__decorate([
14
+ decorators_1.f.property({ required: true }),
15
+ tslib_1.__metadata("design:type", String)
16
+ ], CarsEntity.prototype, "name", void 0);
17
+ tslib_1.__decorate([
18
+ decorators_1.f.property({ required: true }),
19
+ tslib_1.__metadata("design:type", String)
20
+ ], CarsEntity.prototype, "userId", void 0);
21
+ tslib_1.__decorate([
22
+ decorators_1.f.belongsTo({
23
+ entity: () => user_entity_1.UsersEntity,
24
+ inverse: user => user.cars,
25
+ pivotColumnName: 'userId'
26
+ }),
27
+ tslib_1.__metadata("design:type", user_entity_1.UsersEntity)
28
+ ], CarsEntity.prototype, "user", void 0);
29
+ CarsEntity = tslib_1.__decorate([
30
+ decorators_1.f.entity('cars')
31
+ ], CarsEntity);
32
+ exports.CarsEntity = CarsEntity;