@goatlab/fluent 0.7.20 → 0.7.21

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/package.json +2 -2
  2. package/dist/BaseConnector.d.ts +0 -43
  3. package/dist/BaseConnector.js +0 -257
  4. package/dist/Fluent.d.ts +0 -7
  5. package/dist/Fluent.js +0 -22
  6. package/dist/FluentConnectorInterface.d.ts +0 -17
  7. package/dist/FluentConnectorInterface.js +0 -2
  8. package/dist/FluentEntity.d.ts +0 -7
  9. package/dist/FluentEntity.js +0 -28
  10. package/dist/TypeOrmConnector/TypeOrmConnector.d.ts +0 -38
  11. package/dist/TypeOrmConnector/TypeOrmConnector.js +0 -370
  12. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoBaseAggregations.d.ts +0 -7
  13. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoBaseAggregations.js +0 -148
  14. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoFindAggregatedQuery.d.ts +0 -6
  15. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoFindAggregatedQuery.js +0 -45
  16. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoOrderBy.d.ts +0 -4
  17. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoOrderBy.js +0 -19
  18. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoSelect.d.ts +0 -4
  19. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoSelect.js +0 -12
  20. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoWhere.d.ts +0 -6
  21. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoWhere.js +0 -166
  22. package/dist/TypeOrmConnector/queryBuilder/sql/getQueryBuilderWhere.d.ts +0 -8
  23. package/dist/TypeOrmConnector/queryBuilder/sql/getQueryBuilderWhere.js +0 -200
  24. package/dist/TypeOrmConnector/queryBuilder/sql/getTypeOrmWhere.d.ts +0 -6
  25. package/dist/TypeOrmConnector/queryBuilder/sql/getTypeOrmWhere.js +0 -207
  26. package/dist/TypeOrmConnector/test/advanced/advancedTestSuite.d.ts +0 -1
  27. package/dist/TypeOrmConnector/test/advanced/advancedTestSuite.js +0 -256
  28. package/dist/TypeOrmConnector/test/advanced/typeOrm.entity.d.ts +0 -116
  29. package/dist/TypeOrmConnector/test/advanced/typeOrm.entity.js +0 -74
  30. package/dist/TypeOrmConnector/test/advanced/typeOrm.mongo.repository.d.ts +0 -5
  31. package/dist/TypeOrmConnector/test/advanced/typeOrm.mongo.repository.js +0 -17
  32. package/dist/TypeOrmConnector/test/advanced/typeOrm.mysql.repository.d.ts +0 -5
  33. package/dist/TypeOrmConnector/test/advanced/typeOrm.mysql.repository.js +0 -17
  34. package/dist/TypeOrmConnector/test/advanced/typeOrm.repository.d.ts +0 -5
  35. package/dist/TypeOrmConnector/test/advanced/typeOrm.repository.js +0 -17
  36. package/dist/TypeOrmConnector/test/basic/basicTestSuite.d.ts +0 -1
  37. package/dist/TypeOrmConnector/test/basic/basicTestSuite.js +0 -193
  38. package/dist/TypeOrmConnector/test/basic/goat.entity.d.ts +0 -53
  39. package/dist/TypeOrmConnector/test/basic/goat.entity.js +0 -53
  40. package/dist/TypeOrmConnector/test/basic/goat.mongo.repository.d.ts +0 -5
  41. package/dist/TypeOrmConnector/test/basic/goat.mongo.repository.js +0 -16
  42. package/dist/TypeOrmConnector/test/basic/goat.mysql.repository.d.ts +0 -5
  43. package/dist/TypeOrmConnector/test/basic/goat.mysql.repository.js +0 -16
  44. package/dist/TypeOrmConnector/test/basic/goat.repository.d.ts +0 -5
  45. package/dist/TypeOrmConnector/test/basic/goat.repository.js +0 -16
  46. package/dist/TypeOrmConnector/test/dbEntities.d.ts +0 -6
  47. package/dist/TypeOrmConnector/test/dbEntities.js +0 -17
  48. package/dist/TypeOrmConnector/test/docker/docker.d.ts +0 -35
  49. package/dist/TypeOrmConnector/test/docker/docker.js +0 -148
  50. package/dist/TypeOrmConnector/test/docker/mongo.d.ts +0 -16
  51. package/dist/TypeOrmConnector/test/docker/mongo.js +0 -93
  52. package/dist/TypeOrmConnector/test/docker/mysql.d.ts +0 -17
  53. package/dist/TypeOrmConnector/test/docker/mysql.js +0 -132
  54. package/dist/TypeOrmConnector/test/flock.d.ts +0 -4
  55. package/dist/TypeOrmConnector/test/flock.js +0 -25
  56. package/dist/TypeOrmConnector/test/mongo/car.mongo.repository.d.ts +0 -10
  57. package/dist/TypeOrmConnector/test/mongo/car.mongo.repository.js +0 -28
  58. package/dist/TypeOrmConnector/test/mongo/mongoDatasource.d.ts +0 -2
  59. package/dist/TypeOrmConnector/test/mongo/mongoDatasource.js +0 -12
  60. package/dist/TypeOrmConnector/test/mongo/roles.mongo.repository.d.ts +0 -9
  61. package/dist/TypeOrmConnector/test/mongo/roles.mongo.repository.js +0 -25
  62. package/dist/TypeOrmConnector/test/mongo/roles_user.mongo.repository.d.ts +0 -6
  63. package/dist/TypeOrmConnector/test/mongo/roles_user.mongo.repository.js +0 -17
  64. package/dist/TypeOrmConnector/test/mongo/user.mongo.repository.d.ts +0 -10
  65. package/dist/TypeOrmConnector/test/mongo/user.mongo.repository.js +0 -32
  66. package/dist/TypeOrmConnector/test/mysql/car.mysql.repository.d.ts +0 -10
  67. package/dist/TypeOrmConnector/test/mysql/car.mysql.repository.js +0 -26
  68. package/dist/TypeOrmConnector/test/mysql/mysqlDataSource.d.ts +0 -2
  69. package/dist/TypeOrmConnector/test/mysql/mysqlDataSource.js +0 -16
  70. package/dist/TypeOrmConnector/test/mysql/roles.mysql.repository.d.ts +0 -9
  71. package/dist/TypeOrmConnector/test/mysql/roles.mysql.repository.js +0 -25
  72. package/dist/TypeOrmConnector/test/mysql/roles_user.mysql.repository.d.ts +0 -6
  73. package/dist/TypeOrmConnector/test/mysql/roles_user.mysql.repository.js +0 -17
  74. package/dist/TypeOrmConnector/test/mysql/user.mysql.repository.d.ts +0 -10
  75. package/dist/TypeOrmConnector/test/mysql/user.mysql.repository.js +0 -33
  76. package/dist/TypeOrmConnector/test/relations/car/car.entity.d.ts +0 -7
  77. package/dist/TypeOrmConnector/test/relations/car/car.entity.js +0 -32
  78. package/dist/TypeOrmConnector/test/relations/car/car.output.schema.d.ts +0 -511
  79. package/dist/TypeOrmConnector/test/relations/car/car.output.schema.js +0 -8
  80. package/dist/TypeOrmConnector/test/relations/car/car.repositoryTypeOrm.d.ts +0 -10
  81. package/dist/TypeOrmConnector/test/relations/car/car.repositoryTypeOrm.js +0 -26
  82. package/dist/TypeOrmConnector/test/relations/car/car.schema.d.ts +0 -15
  83. package/dist/TypeOrmConnector/test/relations/car/car.schema.js +0 -9
  84. package/dist/TypeOrmConnector/test/relations/relationsTestsSuite.d.ts +0 -1
  85. package/dist/TypeOrmConnector/test/relations/relationsTestsSuite.js +0 -548
  86. package/dist/TypeOrmConnector/test/relations/roles/role.output.schema.d.ts +0 -152
  87. package/dist/TypeOrmConnector/test/relations/roles/role.output.schema.js +0 -14
  88. package/dist/TypeOrmConnector/test/relations/roles/role.schema.d.ts +0 -12
  89. package/dist/TypeOrmConnector/test/relations/roles/role.schema.js +0 -8
  90. package/dist/TypeOrmConnector/test/relations/roles/roles.entity.d.ts +0 -6
  91. package/dist/TypeOrmConnector/test/relations/roles/roles.entity.js +0 -29
  92. package/dist/TypeOrmConnector/test/relations/roles/roles.repositoryTypeOrm.d.ts +0 -9
  93. package/dist/TypeOrmConnector/test/relations/roles/roles.repositoryTypeOrm.js +0 -25
  94. package/dist/TypeOrmConnector/test/relations/roles/roles_user.entity.d.ts +0 -5
  95. package/dist/TypeOrmConnector/test/relations/roles/roles_user.entity.js +0 -23
  96. package/dist/TypeOrmConnector/test/relations/roles/roles_user.schema.d.ts +0 -15
  97. package/dist/TypeOrmConnector/test/relations/roles/roles_user.schema.js +0 -9
  98. package/dist/TypeOrmConnector/test/relations/roles/roles_users.repositoryTypeOrm.d.ts +0 -6
  99. package/dist/TypeOrmConnector/test/relations/roles/roles_users.repositoryTypeOrm.js +0 -17
  100. package/dist/TypeOrmConnector/test/relations/user/user.entity.d.ts +0 -14
  101. package/dist/TypeOrmConnector/test/relations/user/user.entity.js +0 -56
  102. package/dist/TypeOrmConnector/test/relations/user/user.repositoryTypeOrm.d.ts +0 -10
  103. package/dist/TypeOrmConnector/test/relations/user/user.repositoryTypeOrm.js +0 -30
  104. package/dist/TypeOrmConnector/test/relations/user/user.schema.d.ts +0 -546
  105. package/dist/TypeOrmConnector/test/relations/user/user.schema.js +0 -67
  106. package/dist/TypeOrmConnector/test/sqlite/memoryDataSource.d.ts +0 -2
  107. package/dist/TypeOrmConnector/test/sqlite/memoryDataSource.js +0 -12
  108. package/dist/TypeOrmConnector/util/clearEmpties.d.ts +0 -1
  109. package/dist/TypeOrmConnector/util/clearEmpties.js +0 -25
  110. package/dist/TypeOrmConnector/util/extractConditions.d.ts +0 -6
  111. package/dist/TypeOrmConnector/util/extractConditions.js +0 -80
  112. package/dist/TypeOrmConnector/util/extractInclude.d.ts +0 -2
  113. package/dist/TypeOrmConnector/util/extractInclude.js +0 -25
  114. package/dist/TypeOrmConnector/util/extractMetadataFromKeys.d.ts +0 -12
  115. package/dist/TypeOrmConnector/util/extractMetadataFromKeys.js +0 -42
  116. package/dist/TypeOrmConnector/util/extractOrderBy.d.ts +0 -4
  117. package/dist/TypeOrmConnector/util/extractOrderBy.js +0 -18
  118. package/dist/TypeOrmConnector/util/getRelationsFromModelGenerator.d.ts +0 -19
  119. package/dist/TypeOrmConnector/util/getRelationsFromModelGenerator.js +0 -26
  120. package/dist/TypeOrmConnector/util/getSelectedKeysFromRawSql.d.ts +0 -1
  121. package/dist/TypeOrmConnector/util/getSelectedKeysFromRawSql.js +0 -20
  122. package/dist/TypeOrmConnector/util/isAnyObject.d.ts +0 -1
  123. package/dist/TypeOrmConnector/util/isAnyObject.js +0 -7
  124. package/dist/TypeOrmConnector/util/nestQueryResults.d.ts +0 -2
  125. package/dist/TypeOrmConnector/util/nestQueryResults.js +0 -31
  126. package/dist/cache.d.ts +0 -9
  127. package/dist/cache.js +0 -43
  128. package/dist/core/Loopback/build-schema.d.ts +0 -31
  129. package/dist/core/Loopback/build-schema.js +0 -333
  130. package/dist/core/Loopback/common-types.d.ts +0 -36
  131. package/dist/core/Loopback/common-types.js +0 -13
  132. package/dist/core/Loopback/json-to-schema.d.ts +0 -6
  133. package/dist/core/Loopback/json-to-schema.js +0 -96
  134. package/dist/core/Loopback/mapValues.d.ts +0 -2
  135. package/dist/core/Loopback/mapValues.js +0 -835
  136. package/dist/core/Loopback/metadata.d.ts +0 -9
  137. package/dist/core/Loopback/metadata.js +0 -28
  138. package/dist/core/Loopback/model.d.ts +0 -87
  139. package/dist/core/Loopback/model.js +0 -244
  140. package/dist/core/Loopback/query.d.ts +0 -97
  141. package/dist/core/Loopback/query.js +0 -292
  142. package/dist/core/Loopback/relation.types.d.ts +0 -45
  143. package/dist/core/Loopback/relation.types.js +0 -13
  144. package/dist/core/Loopback/type-resolver.d.ts +0 -7
  145. package/dist/core/Loopback/type-resolver.js +0 -34
  146. package/dist/core/Loopback/type.d.ts +0 -9
  147. package/dist/core/Loopback/type.js +0 -2
  148. package/dist/core/Nestjs/applyDecorators.d.ts +0 -1
  149. package/dist/core/Nestjs/applyDecorators.js +0 -17
  150. package/dist/core/Nestjs/types/common.d.ts +0 -16
  151. package/dist/core/Nestjs/types/common.js +0 -37
  152. package/dist/core/Nestjs/types/decorators/api-hide-property.decorator.d.ts +0 -1
  153. package/dist/core/Nestjs/types/decorators/api-hide-property.decorator.js +0 -7
  154. package/dist/core/Nestjs/types/decorators/api-property.decorator.d.ts +0 -27
  155. package/dist/core/Nestjs/types/decorators/api-property.decorator.js +0 -65
  156. package/dist/core/Nestjs/types/decorators/apply-is-optional.decorator.d.ts +0 -5
  157. package/dist/core/Nestjs/types/decorators/apply-is-optional.decorator.js +0 -131
  158. package/dist/core/Nestjs/types/decorators/args-type.decorator.d.ts +0 -1
  159. package/dist/core/Nestjs/types/decorators/args-type.decorator.js +0 -19
  160. package/dist/core/Nestjs/types/decorators/create-property.decorator.d.ts +0 -2
  161. package/dist/core/Nestjs/types/decorators/create-property.decorator.js +0 -55
  162. package/dist/core/Nestjs/types/decorators/directive.decorator.d.ts +0 -1
  163. package/dist/core/Nestjs/types/decorators/directive.decorator.js +0 -36
  164. package/dist/core/Nestjs/types/decorators/extensions.decorator.d.ts +0 -1
  165. package/dist/core/Nestjs/types/decorators/extensions.decorator.js +0 -25
  166. package/dist/core/Nestjs/types/decorators/field.decorator.d.ts +0 -15
  167. package/dist/core/Nestjs/types/decorators/field.decorator.js +0 -56
  168. package/dist/core/Nestjs/types/decorators/input-type.decorator.d.ts +0 -7
  169. package/dist/core/Nestjs/types/decorators/input-type.decorator.js +0 -23
  170. package/dist/core/Nestjs/types/decorators/interface-type.decorator.d.ts +0 -9
  171. package/dist/core/Nestjs/types/decorators/interface-type.decorator.js +0 -27
  172. package/dist/core/Nestjs/types/decorators/partial-type.helper.d.ts +0 -3
  173. package/dist/core/Nestjs/types/decorators/partial-type.helper.js +0 -42
  174. package/dist/core/Nestjs/types/errors/cannot-determine-host-type.error.d.ts +0 -3
  175. package/dist/core/Nestjs/types/errors/cannot-determine-host-type.error.js +0 -9
  176. package/dist/core/Nestjs/types/errors/directive-parsing.error.d.ts +0 -3
  177. package/dist/core/Nestjs/types/errors/directive-parsing.error.js +0 -9
  178. package/dist/core/Nestjs/types/errors/unable-to-find-fields.error.d.ts +0 -3
  179. package/dist/core/Nestjs/types/errors/unable-to-find-fields.error.js +0 -9
  180. package/dist/core/Nestjs/types/errors/undefined-type.error.d.ts +0 -3
  181. package/dist/core/Nestjs/types/errors/undefined-type.error.js +0 -10
  182. package/dist/core/Nestjs/types/interfaces/add-class-type-metadata.util.d.ts +0 -3
  183. package/dist/core/Nestjs/types/interfaces/add-class-type-metadata.util.js +0 -10
  184. package/dist/core/Nestjs/types/interfaces/base-type-options.interface.d.ts +0 -5
  185. package/dist/core/Nestjs/types/interfaces/base-type-options.interface.js +0 -2
  186. package/dist/core/Nestjs/types/interfaces/class-decorator-factory.interface.d.ts +0 -5
  187. package/dist/core/Nestjs/types/interfaces/class-decorator-factory.interface.js +0 -2
  188. package/dist/core/Nestjs/types/interfaces/complexity.interface.d.ts +0 -11
  189. package/dist/core/Nestjs/types/interfaces/complexity.interface.js +0 -2
  190. package/dist/core/Nestjs/types/interfaces/field-middleware.interface.d.ts +0 -15
  191. package/dist/core/Nestjs/types/interfaces/field-middleware.interface.js +0 -2
  192. package/dist/core/Nestjs/types/interfaces/open-api-spec.interface.d.ts +0 -235
  193. package/dist/core/Nestjs/types/interfaces/open-api-spec.interface.js +0 -2
  194. package/dist/core/Nestjs/types/interfaces/resolve-type-fn.interface.d.ts +0 -2
  195. package/dist/core/Nestjs/types/interfaces/resolve-type-fn.interface.js +0 -2
  196. package/dist/core/Nestjs/types/interfaces/return-type-func.interface.d.ts +0 -5
  197. package/dist/core/Nestjs/types/interfaces/return-type-func.interface.js +0 -2
  198. package/dist/core/Nestjs/types/interfaces/schema-object-metadata.interface.d.ts +0 -9
  199. package/dist/core/Nestjs/types/interfaces/schema-object-metadata.interface.js +0 -2
  200. package/dist/core/Nestjs/types/interfaces/type-options.interface.d.ts +0 -5
  201. package/dist/core/Nestjs/types/interfaces/type-options.interface.js +0 -2
  202. package/dist/core/Nestjs/types/lazy-metadata.storage.d.ts +0 -15
  203. package/dist/core/Nestjs/types/lazy-metadata.storage.js +0 -67
  204. package/dist/core/Nestjs/types/metadata/class.metadata.d.ts +0 -11
  205. package/dist/core/Nestjs/types/metadata/class.metadata.js +0 -2
  206. package/dist/core/Nestjs/types/metadata/directive.metadata.d.ts +0 -8
  207. package/dist/core/Nestjs/types/metadata/directive.metadata.js +0 -2
  208. package/dist/core/Nestjs/types/metadata/enum.metadata.d.ts +0 -11
  209. package/dist/core/Nestjs/types/metadata/enum.metadata.js +0 -2
  210. package/dist/core/Nestjs/types/metadata/extensions.metadata.d.ts +0 -8
  211. package/dist/core/Nestjs/types/metadata/extensions.metadata.js +0 -2
  212. package/dist/core/Nestjs/types/metadata/index.d.ts +0 -8
  213. package/dist/core/Nestjs/types/metadata/index.js +0 -11
  214. package/dist/core/Nestjs/types/metadata/interface.metadata.d.ts +0 -6
  215. package/dist/core/Nestjs/types/metadata/interface.metadata.js +0 -2
  216. package/dist/core/Nestjs/types/metadata/object-type.metadata.d.ts +0 -4
  217. package/dist/core/Nestjs/types/metadata/object-type.metadata.js +0 -2
  218. package/dist/core/Nestjs/types/metadata/param.metadata.d.ts +0 -18
  219. package/dist/core/Nestjs/types/metadata/param.metadata.js +0 -2
  220. package/dist/core/Nestjs/types/metadata/property.metadata.d.ts +0 -20
  221. package/dist/core/Nestjs/types/metadata/property.metadata.js +0 -2
  222. package/dist/core/Nestjs/types/metadata/resolver.metadata.d.ts +0 -34
  223. package/dist/core/Nestjs/types/metadata/resolver.metadata.js +0 -2
  224. package/dist/core/Nestjs/types/metadata/union.metadata.d.ts +0 -9
  225. package/dist/core/Nestjs/types/metadata/union.metadata.js +0 -2
  226. package/dist/core/Nestjs/types/object-type.decorator.d.ts +0 -8
  227. package/dist/core/Nestjs/types/object-type.decorator.js +0 -25
  228. package/dist/core/Nestjs/types/omit-type.d.ts +0 -2
  229. package/dist/core/Nestjs/types/omit-type.js +0 -34
  230. package/dist/core/Nestjs/types/reflection.utils.d.ts +0 -15
  231. package/dist/core/Nestjs/types/reflection.utils.js +0 -65
  232. package/dist/core/Nestjs/types/set-metadata.decorator.d.ts +0 -4
  233. package/dist/core/Nestjs/types/set-metadata.decorator.js +0 -16
  234. package/dist/core/Nestjs/types/type-metadata.storage.d.ts +0 -69
  235. package/dist/core/Nestjs/types/type-metadata.storage.js +0 -342
  236. package/dist/core/Nestjs/types/utils/enum.utils.d.ts +0 -3
  237. package/dist/core/Nestjs/types/utils/enum.utils.js +0 -29
  238. package/dist/core/Nestjs/types/utils/get-fields-and-decorator.util.d.ts +0 -3
  239. package/dist/core/Nestjs/types/utils/get-fields-and-decorator.util.js +0 -72
  240. package/dist/core/Nestjs/types/utils/mapped-types.utils.d.ts +0 -2
  241. package/dist/core/Nestjs/types/utils/mapped-types.utils.js +0 -38
  242. package/dist/core/Nestjs/types/utils/model-properties-accessor.d.ts +0 -6
  243. package/dist/core/Nestjs/types/utils/model-properties-accessor.js +0 -36
  244. package/dist/core/Nestjs/types/utils/type-helpers.utils.d.ts +0 -2
  245. package/dist/core/Nestjs/types/utils/type-helpers.utils.js +0 -16
  246. package/dist/core/types.d.ts +0 -23
  247. package/dist/core/types.js +0 -29
  248. package/dist/decorators.d.ts +0 -47
  249. package/dist/decorators.js +0 -104
  250. package/dist/generatorDatasource.d.ts +0 -2
  251. package/dist/generatorDatasource.js +0 -12
  252. package/dist/index.d.ts +0 -29
  253. package/dist/index.js +0 -49
  254. package/dist/loadRelations.d.ts +0 -12
  255. package/dist/loadRelations.js +0 -133
  256. package/dist/outputKeys.d.ts +0 -2
  257. package/dist/outputKeys.js +0 -17
  258. package/dist/tsconfig.tsbuildinfo +0 -1
  259. package/dist/types.d.ts +0 -141
  260. package/dist/types.js +0 -22
@@ -1,548 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.relationsTestSuite = void 0;
4
- const js_utils_1 = require("@goatlab/js-utils");
5
- let User;
6
- let Car;
7
- let Role;
8
- const relationsTestSuite = (UserRepo, BelongsToModelF, ManyToManyModelF) => {
9
- beforeAll(() => {
10
- User = new UserRepo();
11
- Car = new BelongsToModelF();
12
- Role = new ManyToManyModelF();
13
- });
14
- const insertRelatedData = async () => {
15
- const insertedUser = await User.insert({
16
- name: 'testUser1',
17
- age: 20
18
- });
19
- await User.insert({
20
- name: 'anotherUser 2',
21
- age: 24
22
- });
23
- const adminRole = await Role.insert({
24
- name: 'Administrator'
25
- });
26
- const user = await User.loadById(insertedUser.id);
27
- const attachedRole = await user.roles().attach(adminRole.id);
28
- const associatedCar1 = await user.cars().associate({ name: 'My' });
29
- const associatedCar2 = await user.cars().associate({ name: 'My new car 2' });
30
- const associatedCar3 = await user.cars().associate({ name: 'My new car 4' });
31
- const associatedCar4 = await user.cars().associate({ name: 'My new car 4' });
32
- return { insertedUser, adminRole };
33
- };
34
- test('requireById - Should return valid Object', async () => {
35
- const insertedUser = await User.insert({
36
- name: 'testUser',
37
- age: 20
38
- });
39
- expect(typeof insertedUser.id).toBe('string');
40
- const findById = await User.requireById(insertedUser.id);
41
- expect(findById.id).toBe(insertedUser.id);
42
- });
43
- test('requireById - Should fail if not found', async () => {
44
- const insertedUser = await User.insert({
45
- name: 'testUser',
46
- age: 20
47
- });
48
- const [error, found] = await js_utils_1.Promises.try(User.requireById('62ed01e4219a6ab760ae5c50'));
49
- expect(error?.message).toBe('Object 62ed01e4219a6ab760ae5c50 not found');
50
- });
51
- test('loadFirst - Should return a cloned class', async () => {
52
- const insertedUser = await User.insert({
53
- name: 'testUser',
54
- age: 20
55
- });
56
- expect(typeof insertedUser.id).toBe('string');
57
- const user = User.loadFirst({
58
- where: {
59
- id: insertedUser.id
60
- }
61
- });
62
- expect(Array.isArray(user)).toBe(false);
63
- expect(typeof user).toBe('object');
64
- expect(user).toHaveProperty('associate');
65
- });
66
- test('Associate - OneToMany - Should insert data', async () => {
67
- const insertedUser = await User.insert({
68
- name: 'testUser',
69
- age: 20
70
- });
71
- expect(typeof insertedUser.id).toBe('string');
72
- const user = await User.loadById(insertedUser.id);
73
- const cars = await user.cars().associate({ name: 'Another new car' });
74
- expect(Array.isArray(cars)).toBe(true);
75
- expect(cars[0].name).toBe('Another new car');
76
- expect(cars[0].userId).toBe(insertedUser.id);
77
- });
78
- test('Query related model - OneToMany (belongsToMany)', async () => {
79
- const insertedUser = await User.insert({
80
- name: 'testUser',
81
- age: 20
82
- });
83
- expect(typeof insertedUser.id).toBe('string');
84
- const user1 = await User.loadById(insertedUser.id);
85
- const cars = await user1.cars().associate({ name: 'My new car' });
86
- expect(Array.isArray(cars)).toBe(true);
87
- const searchUserWithRelation = await User.findMany({
88
- where: { id: insertedUser.id },
89
- include: {
90
- cars: true
91
- }
92
- });
93
- const firstResult = searchUserWithRelation[0];
94
- expect(Array.isArray(searchUserWithRelation)).toBe(true);
95
- expect(Array.isArray(firstResult.cars)).toBe(true);
96
- expect(firstResult.cars.length > 0).toBe(true);
97
- expect(firstResult.cars[0].userId).toBe(insertedUser.id);
98
- const searchCar = await user1.cars().findMany({
99
- where: { name: 'My new car' },
100
- include: { user: true }
101
- });
102
- expect(Array.isArray(searchCar)).toBe(true);
103
- expect(searchCar.length > 0).toBe(true);
104
- expect(searchCar[0].user?.id).toBe(insertedUser.id);
105
- const searchCar2 = await user1
106
- .cars()
107
- .findMany({ where: { name: 'My.......' } });
108
- expect(Array.isArray(searchCar2)).toBe(true);
109
- expect(searchCar2.length === 0).toBe(true);
110
- });
111
- test('Query related model - ManyToOne (BelongsTo)', async () => {
112
- const insertedUser = await User.insert({
113
- name: 'testUser',
114
- age: 20
115
- });
116
- expect(typeof insertedUser.id).toBe('string');
117
- const user1 = await User.loadById(insertedUser.id);
118
- await user1.cars().associate({ name: 'My new car' });
119
- const results = await Car.findMany({
120
- where: {
121
- userId: insertedUser.id
122
- },
123
- include: {
124
- user: true
125
- }
126
- });
127
- expect(Array.isArray(results)).toBe(true);
128
- expect(results.length > 0).toBe(true);
129
- expect(typeof results[0].user?.name).toBe('string');
130
- expect(results[0].user['id']).toBe(insertedUser.id);
131
- });
132
- test('Include - can load cyclical relations', async () => {
133
- const { insertedUser } = await insertRelatedData();
134
- const searchUserWithRelations = await User.findMany({
135
- where: {
136
- id: insertedUser.id
137
- },
138
- include: {
139
- cars: {
140
- include: {
141
- user: {
142
- include: {
143
- cars: {
144
- include: {
145
- user: true
146
- }
147
- }
148
- }
149
- }
150
- }
151
- }
152
- }
153
- });
154
- expect(searchUserWithRelations.length).toBe(1);
155
- expect(searchUserWithRelations[0].cars?.length).toBe(4);
156
- expect(searchUserWithRelations[0].cars[0].user?.id).toBe(insertedUser.id);
157
- expect(searchUserWithRelations[0].cars[0].user?.name).toBe(insertedUser.name);
158
- expect(searchUserWithRelations[0].cars[0].user?.id).toBe(searchUserWithRelations[0].id);
159
- expect(searchUserWithRelations[0].cars[0].user?.name).toBe(searchUserWithRelations[0].name);
160
- expect(searchUserWithRelations[0].cars[0].user?.cars?.length).toBe(4);
161
- expect(searchUserWithRelations[0].cars[0].user?.cars[0].user?.id).toBe(searchUserWithRelations[0].id);
162
- });
163
- test('Include - can filter related models', async () => {
164
- const { insertedUser } = await insertRelatedData();
165
- const searchUserWithRelations = await User.findMany({
166
- where: {
167
- id: insertedUser.id
168
- },
169
- include: {
170
- cars: {
171
- select: {
172
- name: true,
173
- id: true
174
- },
175
- where: {
176
- name: 'My new car 4'
177
- },
178
- include: {
179
- user: {
180
- include: {
181
- cars: {
182
- where: {
183
- name: 'My new car XXXxX'
184
- },
185
- include: {
186
- user: true
187
- }
188
- }
189
- }
190
- }
191
- }
192
- }
193
- }
194
- });
195
- expect(searchUserWithRelations[0].cars?.length).toBe(2);
196
- expect(searchUserWithRelations[0].cars[0].name).toBe('My new car 4');
197
- expect(searchUserWithRelations[0].cars[0].user?.cars?.length).toBe(0);
198
- });
199
- test('Include - (One to Many) Should display [] if not found', async () => {
200
- const { insertedUser } = await insertRelatedData();
201
- const searchUserWithRelations = await User.findMany({
202
- where: {
203
- id: insertedUser.id
204
- },
205
- include: {
206
- cars: {
207
- where: {
208
- name: 'My new car XX'
209
- }
210
- }
211
- }
212
- });
213
- expect(Array.isArray(searchUserWithRelations[0].cars)).toBe(true);
214
- expect(searchUserWithRelations[0].cars?.length).toBe(0);
215
- });
216
- test('Include - (Many to One) Should display null if not found', async () => {
217
- const { insertedUser } = await insertRelatedData();
218
- const insertedCars = await Car.findMany({
219
- where: {
220
- userId: insertedUser.id
221
- },
222
- select: {
223
- id: true,
224
- name: true,
225
- userId: true,
226
- user: true
227
- },
228
- include: {
229
- user: {
230
- where: {
231
- name: 'JOHN'
232
- }
233
- }
234
- }
235
- });
236
- expect(insertedCars[0].user === null || insertedCars[0].user === undefined).toBe(true);
237
- expect(insertedCars.length).toBe(4);
238
- });
239
- test('Include - Should pull info from the main search object if no related data', async () => {
240
- const { insertedUser } = await insertRelatedData();
241
- const searchUserWithRelations = await User.findMany({
242
- select: {
243
- id: true,
244
- name: true,
245
- cars: {
246
- name: true,
247
- user: {
248
- id: true,
249
- name: true,
250
- cars: {
251
- id: true,
252
- user: true,
253
- name: true
254
- }
255
- }
256
- }
257
- },
258
- where: {
259
- id: insertedUser.id
260
- },
261
- include: {
262
- cars: {
263
- select: {
264
- name: true,
265
- id: true
266
- },
267
- where: {
268
- name: 'My new car XXX'
269
- },
270
- include: {
271
- user: {
272
- include: {
273
- cars: {
274
- where: {
275
- name: 'My new car XXXxX'
276
- },
277
- include: {
278
- user: true
279
- }
280
- }
281
- }
282
- }
283
- }
284
- }
285
- }
286
- });
287
- expect(searchUserWithRelations[0].id).toBe(insertedUser.id);
288
- expect(searchUserWithRelations[0].name).toBe(insertedUser.name);
289
- expect(searchUserWithRelations[0].cars?.length).toBe(0);
290
- });
291
- test('Include - Can filter and select specific keys', async () => {
292
- const { insertedUser } = await insertRelatedData();
293
- const searchUserWithRelations = await User.findMany({
294
- select: {
295
- id: true,
296
- name: true,
297
- age: true,
298
- cars: {
299
- name: true,
300
- user: {
301
- id: true,
302
- name: true,
303
- cars: {
304
- id: true,
305
- user: true,
306
- name: true
307
- }
308
- }
309
- }
310
- },
311
- where: {
312
- id: insertedUser.id
313
- },
314
- include: {
315
- cars: {
316
- select: {
317
- name: true,
318
- id: true
319
- },
320
- where: {
321
- name: 'My new car 4'
322
- },
323
- include: {
324
- user: {
325
- include: {
326
- cars: {
327
- where: {
328
- name: 'My new car XXXxX'
329
- },
330
- include: {
331
- user: true
332
- }
333
- }
334
- }
335
- }
336
- }
337
- }
338
- }
339
- });
340
- expect(searchUserWithRelations[0]).toHaveProperty('age');
341
- expect(searchUserWithRelations[0].age).toBe(insertedUser.age);
342
- expect(searchUserWithRelations[0]).not.toHaveProperty('breed');
343
- });
344
- test('Include - Should filter keys from nested objects', async () => {
345
- const { insertedUser } = await insertRelatedData();
346
- const searchUserWithRelations = await User.findMany({
347
- select: {
348
- id: true,
349
- name: true,
350
- cars: {
351
- name: true,
352
- user: {
353
- id: true,
354
- name: true,
355
- cars: {
356
- id: true,
357
- user: true,
358
- name: true
359
- }
360
- }
361
- }
362
- },
363
- where: {
364
- id: insertedUser.id
365
- },
366
- include: {
367
- cars: {
368
- select: {
369
- name: true
370
- },
371
- where: {
372
- name: 'My new car 4'
373
- },
374
- include: {
375
- user: {
376
- select: {
377
- id: true,
378
- name: true
379
- },
380
- include: {
381
- cars: {
382
- where: {
383
- name: 'My new car XXXxX'
384
- },
385
- include: {
386
- user: true
387
- }
388
- }
389
- }
390
- }
391
- }
392
- }
393
- }
394
- });
395
- expect(searchUserWithRelations[0].cars[0]).not.toHaveProperty('id');
396
- expect(searchUserWithRelations[0].cars[0]).not.toHaveProperty('userId');
397
- expect(searchUserWithRelations[0].cars[0]).toHaveProperty('user');
398
- expect(searchUserWithRelations[0].cars[0].name).toBe('My new car 4');
399
- expect(searchUserWithRelations[0].cars[0].user).not.toHaveProperty('age');
400
- expect(searchUserWithRelations[0].cars[0].user).not.toHaveProperty('breed');
401
- expect(searchUserWithRelations[0].cars[0].user?.id).toBe(insertedUser.id);
402
- });
403
- test('Include - Can select keys using main select or nested selects', async () => {
404
- const { insertedUser } = await insertRelatedData();
405
- await User.findMany({
406
- select: {
407
- id: true,
408
- name: true,
409
- cars: {
410
- name: true,
411
- user: {
412
- id: true,
413
- name: true,
414
- cars: {
415
- id: true,
416
- user: true,
417
- name: true
418
- }
419
- }
420
- }
421
- },
422
- where: {
423
- id: insertedUser.id
424
- },
425
- include: {
426
- cars: {
427
- select: {
428
- name: true,
429
- id: true
430
- },
431
- where: {
432
- name: 'My new car 4'
433
- },
434
- include: {
435
- user: {
436
- include: {
437
- cars: {
438
- where: {
439
- name: 'My new car XXXxX'
440
- },
441
- include: {
442
- user: true
443
- }
444
- }
445
- }
446
- }
447
- }
448
- }
449
- }
450
- });
451
- });
452
- test('Include - (Many to Many) should display [] if not found', async () => {
453
- const { insertedUser } = await insertRelatedData();
454
- await User.findMany({
455
- select: {
456
- id: true,
457
- name: true,
458
- cars: {
459
- name: true,
460
- user: {
461
- id: true,
462
- name: true,
463
- cars: {
464
- id: true,
465
- user: true,
466
- name: true
467
- }
468
- }
469
- }
470
- },
471
- where: {
472
- id: insertedUser.id
473
- },
474
- include: {
475
- cars: {
476
- select: {
477
- name: true,
478
- id: true
479
- },
480
- where: {
481
- name: 'My new car 4'
482
- },
483
- include: {
484
- user: {
485
- include: {
486
- cars: {
487
- where: {
488
- name: 'My new car XXXxX'
489
- },
490
- include: {
491
- user: true
492
- }
493
- }
494
- }
495
- }
496
- }
497
- }
498
- }
499
- });
500
- });
501
- test('Query related model - ManyToMany', async () => {
502
- const insertedUser = await User.insert({
503
- name: 'testUser',
504
- age: 20
505
- });
506
- expect(typeof insertedUser.id).toBe('string');
507
- const adminRole = await Role.insert({
508
- name: 'Administrator'
509
- });
510
- const user = await User.loadById(insertedUser.id);
511
- const attached = await user.roles().attach(adminRole.id);
512
- expect(attached[0].userId).toBe(insertedUser.id);
513
- expect(attached[0].roleId).toBe(adminRole.id);
514
- const searchUserWithRelation = await User.findMany({
515
- where: {
516
- id: insertedUser.id
517
- },
518
- include: {
519
- roles: {
520
- withPivot: true
521
- }
522
- }
523
- });
524
- expect(Array.isArray(searchUserWithRelation[0].roles)).toBe(true);
525
- expect(searchUserWithRelation[0].roles.length > 0).toBe(true);
526
- expect(typeof searchUserWithRelation[0].roles[0].name).toBe('string');
527
- expect(searchUserWithRelation[0].roles[0].id).toBe(adminRole.id);
528
- expect(searchUserWithRelation[0].roles[0].pivot.id).toBe(attached[0].id);
529
- const roles = await Role.findMany({
530
- where: {
531
- name: 'Administrator'
532
- },
533
- include: {
534
- users: { withPivot: true }
535
- }
536
- });
537
- expect(Array.isArray(roles)).toBe(true);
538
- expect(roles.length > 0).toBe(true);
539
- expect(typeof roles[0].users[0].name).toBe('string');
540
- expect(typeof roles[0].users[0].age).toBe('number');
541
- expect(roles[0].users[0].pivot).toBeDefined();
542
- expect(roles[0].users[0].id).toBe(roles[0].users[0].pivot.userId);
543
- expect(roles.some(r => {
544
- return r.users.some(u => u.id === insertedUser.id);
545
- })).toBe(true);
546
- });
547
- };
548
- exports.relationsTestSuite = relationsTestSuite;
@@ -1,152 +0,0 @@
1
- import { z } from 'zod';
2
- export declare const userWithPivot: z.ZodObject<z.extendShape<{
3
- id: z.ZodOptional<z.ZodString>;
4
- name: z.ZodString;
5
- age: z.ZodOptional<z.ZodNumber>;
6
- breed: z.ZodOptional<z.ZodObject<{
7
- family: z.ZodOptional<z.ZodString>;
8
- members: z.ZodOptional<z.ZodNumber>;
9
- }, "strip", z.ZodTypeAny, {
10
- family?: string | undefined;
11
- members?: number | undefined;
12
- }, {
13
- family?: string | undefined;
14
- members?: number | undefined;
15
- }>>;
16
- }, {
17
- pivot: z.ZodOptional<z.ZodObject<{
18
- id: z.ZodOptional<z.ZodString>;
19
- userId: z.ZodString;
20
- roleId: z.ZodString;
21
- }, "strip", z.ZodTypeAny, {
22
- id?: string | undefined;
23
- roleId: string;
24
- userId: string;
25
- }, {
26
- id?: string | undefined;
27
- roleId: string;
28
- userId: string;
29
- }>>;
30
- }>, "strip", z.ZodTypeAny, {
31
- pivot?: {
32
- id?: string | undefined;
33
- roleId: string;
34
- userId: string;
35
- } | undefined;
36
- id?: string | undefined;
37
- age?: number | undefined;
38
- breed?: {
39
- family?: string | undefined;
40
- members?: number | undefined;
41
- } | undefined;
42
- name: string;
43
- }, {
44
- pivot?: {
45
- id?: string | undefined;
46
- roleId: string;
47
- userId: string;
48
- } | undefined;
49
- id?: string | undefined;
50
- age?: number | undefined;
51
- breed?: {
52
- family?: string | undefined;
53
- members?: number | undefined;
54
- } | undefined;
55
- name: string;
56
- }>;
57
- export declare const RoleOuputSchema: z.ZodObject<z.extendShape<{
58
- id: z.ZodOptional<z.ZodString>;
59
- name: z.ZodString;
60
- }, {
61
- id: z.ZodString;
62
- users: z.ZodOptional<z.ZodArray<z.ZodObject<z.extendShape<{
63
- id: z.ZodOptional<z.ZodString>;
64
- name: z.ZodString;
65
- age: z.ZodOptional<z.ZodNumber>;
66
- breed: z.ZodOptional<z.ZodObject<{
67
- family: z.ZodOptional<z.ZodString>;
68
- members: z.ZodOptional<z.ZodNumber>;
69
- }, "strip", z.ZodTypeAny, {
70
- family?: string | undefined;
71
- members?: number | undefined;
72
- }, {
73
- family?: string | undefined;
74
- members?: number | undefined;
75
- }>>;
76
- }, {
77
- pivot: z.ZodOptional<z.ZodObject<{
78
- id: z.ZodOptional<z.ZodString>;
79
- userId: z.ZodString;
80
- roleId: z.ZodString;
81
- }, "strip", z.ZodTypeAny, {
82
- id?: string | undefined;
83
- roleId: string;
84
- userId: string;
85
- }, {
86
- id?: string | undefined;
87
- roleId: string;
88
- userId: string;
89
- }>>;
90
- }>, "strip", z.ZodTypeAny, {
91
- pivot?: {
92
- id?: string | undefined;
93
- roleId: string;
94
- userId: string;
95
- } | undefined;
96
- id?: string | undefined;
97
- age?: number | undefined;
98
- breed?: {
99
- family?: string | undefined;
100
- members?: number | undefined;
101
- } | undefined;
102
- name: string;
103
- }, {
104
- pivot?: {
105
- id?: string | undefined;
106
- roleId: string;
107
- userId: string;
108
- } | undefined;
109
- id?: string | undefined;
110
- age?: number | undefined;
111
- breed?: {
112
- family?: string | undefined;
113
- members?: number | undefined;
114
- } | undefined;
115
- name: string;
116
- }>, "many">>;
117
- }>, "strip", z.ZodTypeAny, {
118
- users?: {
119
- pivot?: {
120
- id?: string | undefined;
121
- roleId: string;
122
- userId: string;
123
- } | undefined;
124
- id?: string | undefined;
125
- age?: number | undefined;
126
- breed?: {
127
- family?: string | undefined;
128
- members?: number | undefined;
129
- } | undefined;
130
- name: string;
131
- }[] | undefined;
132
- id: string;
133
- name: string;
134
- }, {
135
- users?: {
136
- pivot?: {
137
- id?: string | undefined;
138
- roleId: string;
139
- userId: string;
140
- } | undefined;
141
- id?: string | undefined;
142
- age?: number | undefined;
143
- breed?: {
144
- family?: string | undefined;
145
- members?: number | undefined;
146
- } | undefined;
147
- name: string;
148
- }[] | undefined;
149
- id: string;
150
- name: string;
151
- }>;
152
- export declare type RoleDtoOut = z.infer<typeof RoleOuputSchema>;