@klerick/json-api-nestjs-microorm 0.1.0-beta.1 → 0.1.0-beta.10

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 (105) hide show
  1. package/CHANGELOG.md +93 -1
  2. package/README.md +47 -5
  3. package/package.json +23 -40
  4. package/src/index.d.ts +1 -0
  5. package/src/index.js +5 -0
  6. package/src/index.js.map +1 -0
  7. package/src/lib/constants/index.d.ts +5 -0
  8. package/src/lib/constants/index.js +9 -0
  9. package/src/lib/constants/index.js.map +1 -0
  10. package/src/lib/factory/index.d.ts +21 -0
  11. package/src/lib/factory/index.js +116 -0
  12. package/src/lib/factory/index.js.map +1 -0
  13. package/src/lib/index.d.ts +2 -0
  14. package/src/lib/index.js +6 -0
  15. package/src/lib/index.js.map +1 -0
  16. package/src/lib/micro-orm-json-api.module.d.ts +7 -0
  17. package/src/lib/micro-orm-json-api.module.js +50 -0
  18. package/src/lib/micro-orm-json-api.module.js.map +1 -0
  19. package/src/lib/mock-utils/entities/addresses.d.ts +12 -0
  20. package/src/lib/mock-utils/entities/addresses.js +87 -0
  21. package/src/lib/mock-utils/entities/addresses.js.map +1 -0
  22. package/src/lib/mock-utils/entities/comments.d.ts +15 -0
  23. package/src/lib/mock-utils/entities/comments.js +72 -0
  24. package/src/lib/mock-utils/entities/comments.js.map +1 -0
  25. package/src/lib/mock-utils/entities/index.d.ts +13 -0
  26. package/src/lib/mock-utils/entities/index.js +18 -0
  27. package/src/lib/mock-utils/entities/index.js.map +1 -0
  28. package/src/lib/mock-utils/entities/notes.d.ts +10 -0
  29. package/src/lib/mock-utils/entities/notes.js +64 -0
  30. package/src/lib/mock-utils/entities/notes.js.map +1 -0
  31. package/src/lib/mock-utils/entities/roles.d.ts +12 -0
  32. package/src/lib/mock-utils/entities/roles.js +80 -0
  33. package/src/lib/mock-utils/entities/roles.js.map +1 -0
  34. package/src/lib/mock-utils/entities/user-groups.d.ts +7 -0
  35. package/src/lib/mock-utils/entities/user-groups.js +37 -0
  36. package/src/lib/mock-utils/entities/user-groups.js.map +1 -0
  37. package/src/lib/mock-utils/entities/users.d.ts +23 -0
  38. package/src/lib/mock-utils/entities/users.js +166 -0
  39. package/src/lib/mock-utils/entities/users.js.map +1 -0
  40. package/src/lib/mock-utils/index.d.ts +23 -0
  41. package/src/lib/mock-utils/index.js +97 -0
  42. package/src/lib/mock-utils/index.js.map +1 -0
  43. package/src/lib/mock-utils/utils/index.d.ts +3 -0
  44. package/src/lib/mock-utils/utils/index.js +7 -0
  45. package/src/lib/mock-utils/utils/index.js.map +1 -0
  46. package/src/lib/mock-utils/utils/init-db.d.ts +3 -0
  47. package/src/lib/mock-utils/utils/init-db.js +38 -0
  48. package/src/lib/mock-utils/utils/init-db.js.map +1 -0
  49. package/src/lib/mock-utils/utils/provider-entities.d.ts +10 -0
  50. package/src/lib/mock-utils/utils/provider-entities.js +22 -0
  51. package/src/lib/mock-utils/utils/provider-entities.js.map +1 -0
  52. package/src/lib/mock-utils/utils/pull-data.d.ts +9 -0
  53. package/src/lib/mock-utils/utils/pull-data.js +115 -0
  54. package/src/lib/mock-utils/utils/pull-data.js.map +1 -0
  55. package/src/lib/orm-helper/index.d.ts +12 -0
  56. package/src/lib/orm-helper/index.js +183 -0
  57. package/src/lib/orm-helper/index.js.map +1 -0
  58. package/src/lib/orm-methods/delete-one/delete-one.d.ts +2 -0
  59. package/src/lib/orm-methods/delete-one/delete-one.js +16 -0
  60. package/src/lib/orm-methods/delete-one/delete-one.js.map +1 -0
  61. package/src/lib/orm-methods/delete-relationship/delete-relationship.d.ts +4 -0
  62. package/src/lib/orm-methods/delete-relationship/delete-relationship.js +40 -0
  63. package/src/lib/orm-methods/delete-relationship/delete-relationship.js.map +1 -0
  64. package/src/lib/orm-methods/get-all/get-all.d.ts +6 -0
  65. package/src/lib/orm-methods/get-all/get-all.js +65 -0
  66. package/src/lib/orm-methods/get-all/get-all.js.map +1 -0
  67. package/src/lib/orm-methods/get-all/get-query-for-count.d.ts +5 -0
  68. package/src/lib/orm-methods/get-all/get-query-for-count.js +43 -0
  69. package/src/lib/orm-methods/get-all/get-query-for-count.js.map +1 -0
  70. package/src/lib/orm-methods/get-one/get-one.d.ts +3 -0
  71. package/src/lib/orm-methods/get-one/get-one.js +26 -0
  72. package/src/lib/orm-methods/get-one/get-one.js.map +1 -0
  73. package/src/lib/orm-methods/get-relationship/get-relationship.d.ts +3 -0
  74. package/src/lib/orm-methods/get-relationship/get-relationship.js +24 -0
  75. package/src/lib/orm-methods/get-relationship/get-relationship.js.map +1 -0
  76. package/src/lib/orm-methods/index.d.ts +9 -0
  77. package/src/lib/orm-methods/index.js +13 -0
  78. package/src/lib/orm-methods/index.js.map +1 -0
  79. package/src/lib/orm-methods/patch-one/patch-one.d.ts +3 -0
  80. package/src/lib/orm-methods/patch-one/patch-one.js +40 -0
  81. package/src/lib/orm-methods/patch-one/patch-one.js.map +1 -0
  82. package/src/lib/orm-methods/patch-relationship/patch-relationship.d.ts +4 -0
  83. package/src/lib/orm-methods/patch-relationship/patch-relationship.js +23 -0
  84. package/src/lib/orm-methods/patch-relationship/patch-relationship.js.map +1 -0
  85. package/src/lib/orm-methods/post-one/post-one.d.ts +3 -0
  86. package/src/lib/orm-methods/post-one/post-one.js +16 -0
  87. package/src/lib/orm-methods/post-one/post-one.js.map +1 -0
  88. package/src/lib/orm-methods/post-relationship/post-relationship.d.ts +4 -0
  89. package/src/lib/orm-methods/post-relationship/post-relationship.js +21 -0
  90. package/src/lib/orm-methods/post-relationship/post-relationship.js.map +1 -0
  91. package/src/lib/service/index.d.ts +3 -0
  92. package/src/lib/service/index.js +7 -0
  93. package/src/lib/service/index.js.map +1 -0
  94. package/src/lib/service/micro-orm-util.service.d.ts +51 -0
  95. package/src/lib/service/micro-orm-util.service.js +554 -0
  96. package/src/lib/service/micro-orm-util.service.js.map +1 -0
  97. package/src/lib/service/microorm-service.d.ts +21 -0
  98. package/src/lib/service/microorm-service.js +121 -0
  99. package/src/lib/service/microorm-service.js.map +1 -0
  100. package/src/lib/service/mikro-orm-format.error.service.d.ts +11 -0
  101. package/src/lib/service/mikro-orm-format.error.service.js +95 -0
  102. package/src/lib/service/mikro-orm-format.error.service.js.map +1 -0
  103. package/src/lib/type.d.ts +3 -0
  104. package/src/lib/type.js +3 -0
  105. package/src/lib/type.js.map +1 -0
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getSortObject = getSortObject;
4
+ exports.getQueryForCount = getQueryForCount;
5
+ const json_api_nestjs_shared_1 = require("@klerick/json-api-nestjs-shared");
6
+ function getSortObject(query) {
7
+ const { sort } = query;
8
+ const sortObject = {};
9
+ if (!sort)
10
+ return sortObject;
11
+ const { target = {}, ...relation } = sort;
12
+ for (const [filed, sortType] of json_api_nestjs_shared_1.ObjectTyped.entries(target)) {
13
+ Reflect.set(sortObject, filed, sortType);
14
+ }
15
+ for (const [relationName, orderConfig = {}] of json_api_nestjs_shared_1.ObjectTyped.entries(relation)) {
16
+ const name = relationName;
17
+ sortObject[name] = {};
18
+ for (const [field, sortType] of json_api_nestjs_shared_1.ObjectTyped.entries(orderConfig)) {
19
+ sortObject[name][field] = sortType;
20
+ }
21
+ }
22
+ return sortObject;
23
+ }
24
+ function getQueryForCount(query) {
25
+ const querySelect = this.microOrmUtilService.queryBuilder();
26
+ const sortObject = getSortObject(query);
27
+ querySelect.orderBy(Object.keys(sortObject).length > 0
28
+ ? sortObject
29
+ : {
30
+ [this.microOrmUtilService.currentPrimaryColumn]: 'ASC',
31
+ });
32
+ const expressionArrayForTarget = this.microOrmUtilService.getFilterExpressionForTarget(query);
33
+ const expressionArrayForRelation = this.microOrmUtilService.getFilterExpressionForRelation(query);
34
+ const resultExpression = [
35
+ ...expressionArrayForTarget,
36
+ ...expressionArrayForRelation,
37
+ ];
38
+ for (const expression of resultExpression) {
39
+ querySelect.andWhere(expression);
40
+ }
41
+ return querySelect;
42
+ }
43
+ //# sourceMappingURL=get-query-for-count.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-query-for-count.js","sourceRoot":"","sources":["../../../../../../../../libs/json-api/json-api-nestjs-microorm/src/lib/orm-methods/get-all/get-query-for-count.ts"],"names":[],"mappings":";;AAMA,sCAsBC;AAED,4CA4BC;AA1DD,4EAA8D;AAM9D,SAAgB,aAAa,CAC3B,KAAsB;IAEtB,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;IACvB,MAAM,UAAU,GAAuB,EAAE,CAAC;IAC1C,IAAI,CAAC,IAAI;QAAE,OAAO,UAAU,CAAC;IAE7B,MAAM,EAAE,MAAM,GAAG,EAAE,EAAE,GAAG,QAAQ,EAAE,GAAG,IAAW,CAAC;IACjD,KAAK,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,oCAAW,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC3C,CAAC;IAED,KAAK,MAAM,CAAC,YAAY,EAAE,WAAW,GAAG,EAAE,CAAC,IAAI,oCAAW,CAAC,OAAO,CAChE,QAAQ,CACT,EAAE,CAAC;QACF,MAAM,IAAI,GAAG,YAAuC,CAAC;QACrD,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QACtB,KAAK,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,oCAAW,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;YACjE,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC;QACrC,CAAC;IACH,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAgB,gBAAgB,CAE9B,KAAsB;IAEtB,MAAM,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE,CAAC;IAC5D,MAAM,UAAU,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IACxC,WAAW,CAAC,OAAO,CACjB,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC;QAChC,CAAC,CAAC,UAAU;QACZ,CAAC,CAAC;YACE,CAAC,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,CAAC,EAAE,KAAK;SACvD,CACN,CAAC;IAEF,MAAM,wBAAwB,GAC5B,IAAI,CAAC,mBAAmB,CAAC,4BAA4B,CAAC,KAAY,CAAC,CAAC;IACtE,MAAM,0BAA0B,GAC9B,IAAI,CAAC,mBAAmB,CAAC,8BAA8B,CAAC,KAAY,CAAC,CAAC;IAExE,MAAM,gBAAgB,GAAG;QACvB,GAAG,wBAAwB;QAC3B,GAAG,0BAA0B;KAC9B,CAAC;IACF,KAAK,MAAM,UAAU,IAAI,gBAAgB,EAAE,CAAC;QAC1C,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IACnC,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { QueryOne } from '@klerick/json-api-nestjs';
2
+ import { MicroOrmService } from '../../service';
3
+ export declare function getOne<E extends object, IdKey extends string>(this: MicroOrmService<E, IdKey>, id: number | string, query: QueryOne<E, IdKey>, additionalQueryParams?: Record<string, unknown>): Promise<E>;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getOne = getOne;
4
+ const common_1 = require("@nestjs/common");
5
+ const core_1 = require("@mikro-orm/core");
6
+ async function getOne(id, query, additionalQueryParams) {
7
+ const queryBuilder = this.microOrmUtilService.queryBuilder().where({
8
+ [this.microOrmUtilService.currentPrimaryColumn]: id,
9
+ });
10
+ const resultQueryBuilder = this.microOrmUtilService.prePareQueryBuilder(queryBuilder, query);
11
+ if (additionalQueryParams) {
12
+ resultQueryBuilder.andWhere(additionalQueryParams);
13
+ }
14
+ await resultQueryBuilder.applyFilters();
15
+ const resultItem = await resultQueryBuilder.getSingleResult();
16
+ if (!resultItem) {
17
+ const error = {
18
+ code: 'invalid_arguments',
19
+ message: `Resource '${this.microOrmUtilService.currentAlias}' with id '${id}' does not exist`,
20
+ path: ['fields'],
21
+ };
22
+ throw new common_1.NotFoundException([error]);
23
+ }
24
+ return (0, core_1.wrap)(resultItem).toJSON();
25
+ }
26
+ //# sourceMappingURL=get-one.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-one.js","sourceRoot":"","sources":["../../../../../../../../libs/json-api/json-api-nestjs-microorm/src/lib/orm-methods/get-one/get-one.ts"],"names":[],"mappings":";;AAKA,wBAgCC;AArCD,2CAAmD;AAEnD,0CAAuC;AAGhC,KAAK,UAAU,MAAM,CAE1B,EAAmB,EACnB,KAAyB,EACzB,qBAA+C;IAE/C,MAAM,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC;QACjE,CAAC,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,CAAC,EAAE,EAAE;KACpD,CAAC,CAAC;IAEH,MAAM,kBAAkB,GAAG,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,CACrE,YAAY,EACZ,KAAY,CACb,CAAC;IAEF,IAAI,qBAAqB,EAAE,CAAC;QAC1B,kBAAkB,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,kBAAkB,CAAC,YAAY,EAAE,CAAC;IAExC,MAAM,UAAU,GAAG,MAAM,kBAAkB,CAAC,eAAe,EAAE,CAAC;IAC9D,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,KAAK,GAAuB;YAChC,IAAI,EAAE,mBAAmB;YACzB,OAAO,EAAE,aAAa,IAAI,CAAC,mBAAmB,CAAC,YAAY,cAAc,EAAE,kBAAkB;YAC7F,IAAI,EAAE,CAAC,QAAQ,CAAC;SACjB,CAAC;QACF,MAAM,IAAI,0BAAiB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IACvC,CAAC;IAED,OAAO,IAAA,WAAI,EAAC,UAAU,CAAC,CAAC,MAAM,EAAO,CAAC;AACxC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { RelationKeys } from '@klerick/json-api-nestjs-shared';
2
+ import { MicroOrmService } from '../../service';
3
+ export declare function getRelationship<E extends object, IdKey extends string, Rel extends RelationKeys<E, IdKey>>(this: MicroOrmService<E, IdKey>, id: number | string, rel: Rel): Promise<E>;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getRelationship = getRelationship;
4
+ const common_1 = require("@nestjs/common");
5
+ const core_1 = require("@mikro-orm/core");
6
+ async function getRelationship(id, rel) {
7
+ const result = await this.microOrmUtilService
8
+ .queryBuilder()
9
+ .leftJoinAndSelect(`${this.microOrmUtilService.currentAlias}.${rel.toString()}`, rel.toString(), {}, [this.microOrmUtilService.getPrimaryNameFor(rel)])
10
+ .where({
11
+ [this.microOrmUtilService.currentPrimaryColumn]: id,
12
+ })
13
+ .getSingleResult();
14
+ if (!result) {
15
+ const error = {
16
+ code: 'invalid_arguments',
17
+ message: `Resource '${this.microOrmUtilService.currentAlias}' with id '${id}' does not exist`,
18
+ path: ['fields'],
19
+ };
20
+ throw new common_1.NotFoundException([error]);
21
+ }
22
+ return (0, core_1.serialize)(result, { forceObject: true });
23
+ }
24
+ //# sourceMappingURL=get-relationship.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-relationship.js","sourceRoot":"","sources":["../../../../../../../../libs/json-api/json-api-nestjs-microorm/src/lib/orm-methods/get-relationship/get-relationship.ts"],"names":[],"mappings":";;AAOA,0CA4BC;AAlCD,2CAAmD;AAEnD,0CAA4C;AAIrC,KAAK,UAAU,eAAe,CAIF,EAAmB,EAAE,GAAQ;IAC9D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB;SAC1C,YAAY,EAAE;SACd,iBAAiB,CAChB,GAAG,IAAI,CAAC,mBAAmB,CAAC,YAAY,IAAI,GAAG,CAAC,QAAQ,EAAE,EAAE,EAC5D,GAAG,CAAC,QAAQ,EAAE,EACd,EAAE,EACF,CAAC,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,GAAU,CAAC,CAAC,CACzD;SACA,KAAK,CAAC;QACL,CAAC,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,CAAC,EAAE,EAAE;KACpD,CAAC;SACD,eAAe,EAAE,CAAC;IAErB,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,KAAK,GAAuB;YAChC,IAAI,EAAE,mBAAmB;YACzB,OAAO,EAAE,aAAa,IAAI,CAAC,mBAAmB,CAAC,YAAY,cAAc,EAAE,kBAAkB;YAC7F,IAAI,EAAE,CAAC,QAAQ,CAAC;SACjB,CAAC;QACF,MAAM,IAAI,0BAAiB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IACvC,CAAC;IAED,OAAO,IAAA,gBAAS,EAAC,MAAM,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAiB,CAAC;AAClE,CAAC"}
@@ -0,0 +1,9 @@
1
+ export * from './get-all/get-all';
2
+ export * from './get-one/get-one';
3
+ export * from './delete-one/delete-one';
4
+ export * from './post-one/post-one';
5
+ export * from './patch-one/patch-one';
6
+ export * from './get-relationship/get-relationship';
7
+ export * from './delete-relationship/delete-relationship';
8
+ export * from './post-relationship/post-relationship';
9
+ export * from './patch-relationship/patch-relationship';
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./get-all/get-all"), exports);
5
+ tslib_1.__exportStar(require("./get-one/get-one"), exports);
6
+ tslib_1.__exportStar(require("./delete-one/delete-one"), exports);
7
+ tslib_1.__exportStar(require("./post-one/post-one"), exports);
8
+ tslib_1.__exportStar(require("./patch-one/patch-one"), exports);
9
+ tslib_1.__exportStar(require("./get-relationship/get-relationship"), exports);
10
+ tslib_1.__exportStar(require("./delete-relationship/delete-relationship"), exports);
11
+ tslib_1.__exportStar(require("./post-relationship/post-relationship"), exports);
12
+ tslib_1.__exportStar(require("./patch-relationship/patch-relationship"), exports);
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../libs/json-api/json-api-nestjs-microorm/src/lib/orm-methods/index.ts"],"names":[],"mappings":";;;AAAA,4DAAkC;AAClC,4DAAkC;AAClC,kEAAwC;AACxC,8DAAoC;AACpC,gEAAsC;AACtC,8EAAoD;AACpD,oFAA0D;AAC1D,gFAAsD;AACtD,kFAAwD"}
@@ -0,0 +1,3 @@
1
+ import { PatchData } from '@klerick/json-api-nestjs';
2
+ import { MicroOrmService } from '../../service';
3
+ export declare function patchOne<E extends object, IdKey extends string>(this: MicroOrmService<E, IdKey>, id: number | string, inputData: PatchData<E, IdKey>): Promise<E>;
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.patchOne = patchOne;
4
+ const common_1 = require("@nestjs/common");
5
+ const json_api_nestjs_shared_1 = require("@klerick/json-api-nestjs-shared");
6
+ async function patchOne(id, inputData) {
7
+ const { id: idBody, attributes, relationships } = inputData;
8
+ if (`${id}` !== idBody) {
9
+ const error = {
10
+ code: 'invalid_arguments',
11
+ message: `Data 'id' must be equal to url param`,
12
+ path: ['data', 'id'],
13
+ };
14
+ throw new common_1.UnprocessableEntityException([error]);
15
+ }
16
+ const existEntity = await this.microOrmUtilService
17
+ .queryBuilder()
18
+ .where({
19
+ [this.microOrmUtilService.currentPrimaryColumn]: id,
20
+ })
21
+ .getSingleResult();
22
+ if (!existEntity) {
23
+ const error = {
24
+ code: 'invalid_arguments',
25
+ message: `Resource '${this.microOrmUtilService.currentAlias}' with id '${id}' does not exist`,
26
+ path: ['data', 'id'],
27
+ };
28
+ throw new common_1.NotFoundException([error]);
29
+ }
30
+ if (attributes) {
31
+ const attrTarget = this.microOrmUtilService.createEntity(attributes);
32
+ for (const [props, val] of json_api_nestjs_shared_1.ObjectTyped.entries(attrTarget)) {
33
+ if (!(props in attributes))
34
+ continue;
35
+ Reflect.set(existEntity, props, val);
36
+ }
37
+ }
38
+ return this.microOrmUtilService.saveEntity(existEntity, relationships);
39
+ }
40
+ //# sourceMappingURL=patch-one.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"patch-one.js","sourceRoot":"","sources":["../../../../../../../../libs/json-api/json-api-nestjs-microorm/src/lib/orm-methods/patch-one/patch-one.ts"],"names":[],"mappings":";;AAQA,4BA0CC;AAlDD,2CAGwB;AACxB,4EAA8D;AAIvD,KAAK,UAAU,QAAQ,CAE5B,EAAmB,EACnB,SAA8B;IAE9B,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,GAAG,SAAS,CAAC;IAE5D,IAAI,GAAG,EAAE,EAAE,KAAK,MAAM,EAAE,CAAC;QACvB,MAAM,KAAK,GAAuB;YAChC,IAAI,EAAE,mBAAmB;YACzB,OAAO,EAAE,sCAAsC;YAC/C,IAAI,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC;SACrB,CAAC;QAEF,MAAM,IAAI,qCAA4B,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,mBAAmB;SAC/C,YAAY,EAAE;SACd,KAAK,CAAC;QACL,CAAC,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,CAAC,EAAE,EAAE;KACpD,CAAC;SACD,eAAe,EAAE,CAAC;IAErB,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,KAAK,GAAuB;YAChC,IAAI,EAAE,mBAAmB;YACzB,OAAO,EAAE,aAAa,IAAI,CAAC,mBAAmB,CAAC,YAAY,cAAc,EAAE,kBAAkB;YAC7F,IAAI,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC;SACrB,CAAC;QACF,MAAM,IAAI,0BAAiB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IACvC,CAAC;IAED,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,UAAiB,CAAC,CAAC;QAE5E,KAAK,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,oCAAW,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3D,IAAI,CAAC,CAAC,KAAK,IAAI,UAAU,CAAC;gBAAE,SAAS;YACrC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,WAAW,EAAE,aAAoB,CAAC,CAAC;AAChF,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { RelationKeys } from '@klerick/json-api-nestjs-shared';
2
+ import { PatchRelationshipData } from '@klerick/json-api-nestjs';
3
+ import { MicroOrmService } from '../../service';
4
+ export declare function patchRelationship<E extends object, IdKey extends string, Rel extends RelationKeys<E, IdKey>>(this: MicroOrmService<E, IdKey>, id: number | string, rel: Rel, input: PatchRelationshipData): Promise<E>;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.patchRelationship = patchRelationship;
4
+ const get_relationship_1 = require("../get-relationship/get-relationship");
5
+ async function patchRelationship(id, rel, input) {
6
+ const idsResult = await this.microOrmUtilService.validateRelationInputData(rel, input);
7
+ const currentEntityRef = this.microOrmUtilService.entityManager.getReference(this.microOrmUtilService.entity, id);
8
+ const relEntity = this.microOrmUtilService.getRelation(rel).entity();
9
+ if (Array.isArray(idsResult)) {
10
+ const relRef = idsResult.map((i) => this.microOrmUtilService.entityManager.getReference(relEntity, i));
11
+ // @ts-ignore
12
+ currentEntityRef[rel].removeAll();
13
+ // @ts-ignore
14
+ currentEntityRef[rel].add(...relRef);
15
+ }
16
+ else {
17
+ // @ts-ignore
18
+ currentEntityRef[rel] = this.microOrmUtilService.entityManager.getReference(relEntity, idsResult);
19
+ }
20
+ await this.microOrmUtilService.entityManager.flush();
21
+ return get_relationship_1.getRelationship.call(this, id, rel);
22
+ }
23
+ //# sourceMappingURL=patch-relationship.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"patch-relationship.js","sourceRoot":"","sources":["../../../../../../../../libs/json-api/json-api-nestjs-microorm/src/lib/orm-methods/patch-relationship/patch-relationship.ts"],"names":[],"mappings":";;AAKA,8CA4CC;AA/CD,2EAAuE;AAGhE,KAAK,UAAU,iBAAiB,CAMrC,EAAmB,EACnB,GAAQ,EACR,KAA4B;IAE5B,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,yBAAyB,CACxE,GAAU,EACV,KAAK,CACN,CAAC;IACF,MAAM,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,YAAY,CAC1E,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAC/B,EAAS,CACV,CAAC;IAEF,MAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,GAAU,CAAC,CAAC,MAAM,EAAE,CAAC;IAE5E,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACjC,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,YAAY,CAAC,SAAS,EAAE,CAAQ,CAAC,CACzE,CAAC;QACF,aAAa;QACb,gBAAgB,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC;QAClC,aAAa;QACb,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;IACvC,CAAC;SAAM,CAAC;QACN,aAAa;QACb,gBAAgB,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,YAAY,CACzE,SAAS,EACT,SAAgB,CACjB,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;IAErD,OAAO,kCAAe,CAAC,IAAI,CAIzB,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;AACnB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { PostData } from '@klerick/json-api-nestjs';
2
+ import { MicroOrmService } from '../../service';
3
+ export declare function postOne<E extends object, IdKey extends string>(this: MicroOrmService<E, IdKey>, inputData: PostData<E, IdKey>): Promise<E>;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.postOne = postOne;
4
+ async function postOne(inputData) {
5
+ const { attributes, relationships, id } = inputData;
6
+ const idObject = id
7
+ ? { [this.microOrmUtilService.currentPrimaryColumn.toString()]: id }
8
+ : {};
9
+ const attributesObject = {
10
+ ...attributes,
11
+ ...idObject,
12
+ };
13
+ const entityIns = this.microOrmUtilService.createEntity(attributesObject);
14
+ return this.microOrmUtilService.saveEntity(entityIns, relationships);
15
+ }
16
+ //# sourceMappingURL=post-one.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"post-one.js","sourceRoot":"","sources":["../../../../../../../../libs/json-api/json-api-nestjs-microorm/src/lib/orm-methods/post-one/post-one.ts"],"names":[],"mappings":";;AAKA,0BAkBC;AAlBM,KAAK,UAAU,OAAO,CAE3B,SAA6B;IAE7B,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,EAAE,EAAE,GAAG,SAAS,CAAC;IAEpD,MAAM,QAAQ,GAAG,EAAE;QACjB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE;QACpE,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,gBAAgB,GAAG;QACvB,GAAG,UAAU;QACb,GAAG,QAAQ;KACgB,CAAC;IAE9B,MAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;IAE1E,OAAO,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;AACvE,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { RelationKeys } from '@klerick/json-api-nestjs-shared';
2
+ import { PostRelationshipData } from '@klerick/json-api-nestjs';
3
+ import { MicroOrmService } from '../../service';
4
+ export declare function postRelationship<E extends object, IdKey extends string, Rel extends RelationKeys<E, IdKey>>(this: MicroOrmService<E, IdKey>, id: number | string, rel: Rel, input: PostRelationshipData): Promise<E>;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.postRelationship = postRelationship;
4
+ const get_relationship_1 = require("../get-relationship/get-relationship");
5
+ async function postRelationship(id, rel, input) {
6
+ const idsResult = await this.microOrmUtilService.validateRelationInputData(rel, input);
7
+ const currentEntityRef = this.microOrmUtilService.entityManager.getReference(this.microOrmUtilService.entity, id);
8
+ const relEntity = this.microOrmUtilService.getRelation(rel).entity();
9
+ if (Array.isArray(idsResult)) {
10
+ const relRef = idsResult.map((i) => this.microOrmUtilService.entityManager.getReference(relEntity, i));
11
+ // @ts-ignore
12
+ currentEntityRef[rel].add(...relRef);
13
+ }
14
+ else {
15
+ // @ts-ignore
16
+ currentEntityRef[rel] = this.microOrmUtilService.entityManager.getReference(relEntity, idsResult);
17
+ }
18
+ await this.microOrmUtilService.entityManager.flush();
19
+ return get_relationship_1.getRelationship.call(this, id, rel);
20
+ }
21
+ //# sourceMappingURL=post-relationship.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"post-relationship.js","sourceRoot":"","sources":["../../../../../../../../libs/json-api/json-api-nestjs-microorm/src/lib/orm-methods/post-relationship/post-relationship.ts"],"names":[],"mappings":";;AAKA,4CA2CC;AA9CD,2EAAuE;AAGhE,KAAK,UAAU,gBAAgB,CAMpC,EAAmB,EACnB,GAAQ,EACR,KAA2B;IAE3B,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,yBAAyB,CACxE,GAAU,EACV,KAAK,CACN,CAAC;IAEF,MAAM,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,YAAY,CAC1E,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAC/B,EAAS,CACV,CAAC;IAEF,MAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,GAAU,CAAC,CAAC,MAAM,EAAE,CAAC;IAE5E,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACjC,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,YAAY,CAAC,SAAS,EAAE,CAAQ,CAAC,CACzE,CAAC;QACF,aAAa;QACb,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;IACvC,CAAC;SAAM,CAAC;QACN,aAAa;QACb,gBAAgB,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,YAAY,CACzE,SAAS,EACT,SAAgB,CACjB,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;IAErD,OAAO,kCAAe,CAAC,IAAI,CAIzB,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;AACnB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './microorm-service';
2
+ export * from './mikro-orm-format.error.service';
3
+ export * from './micro-orm-util.service';
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./microorm-service"), exports);
5
+ tslib_1.__exportStar(require("./mikro-orm-format.error.service"), exports);
6
+ tslib_1.__exportStar(require("./micro-orm-util.service"), exports);
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../libs/json-api/json-api-nestjs-microorm/src/lib/service/index.ts"],"names":[],"mappings":";;;AAAA,6DAAmC;AACnC,2EAAiD;AACjD,mEAAyC"}
@@ -0,0 +1,51 @@
1
+ import { EntityClass, EntityKey, EntityProperty, type QBFilterQuery, QBQueryOrderMap, EntityData, Collection } from '@mikro-orm/core';
2
+ import { type Knex, SqlEntityManager, QueryBuilder } from '@mikro-orm/knex';
3
+ import { Query, QueryOne, Relationships } from '@klerick/json-api-nestjs';
4
+ import { RelationKeys } from '@klerick/json-api-nestjs-shared';
5
+ export type InputValidateData = {
6
+ type: string;
7
+ id: string;
8
+ };
9
+ export type ValidateReturn<T> = T extends unknown[] ? string[] : T extends null ? null : string;
10
+ type RelationshipsResult<E extends object> = {
11
+ [K in RelationKeys<E>]: E[K] extends object ? E[K] extends Collection<E[K]> ? E[K] : E[K] | null : never;
12
+ };
13
+ export declare class MicroOrmUtilService<E extends object, IdKey extends string = 'id'> {
14
+ readonly entityManager: SqlEntityManager;
15
+ private entityRepository;
16
+ readonly entity: EntityClass<E>;
17
+ private _relationsName;
18
+ private _relationMap;
19
+ private _relationPropsMap;
20
+ get relationsName(): EntityKey<E, false>[];
21
+ getRelationProps(entity: EntityClass<E>): EntityKey<E, false>[];
22
+ getRelation(name: EntityKey<E, false>): EntityProperty<E, any>;
23
+ get currentAlias(): string;
24
+ get metadata(): import("@mikro-orm/core").EntityMetadata<E>;
25
+ get currentPrimaryColumn(): EntityKey<E, false>;
26
+ get defaultOrder(): QBQueryOrderMap<E>;
27
+ getAliasForEntity<T = E>(entity: EntityClass<T>): string;
28
+ getAliasForPivotTable<T = E>(relName: keyof T): string;
29
+ getAliasForPivotTable<T = E>(entity: EntityClass<T>, relName: keyof T): string;
30
+ queryBuilder<T extends object = E>(entity: EntityClass<T>, alias: string): QueryBuilder<T, typeof alias>;
31
+ queryBuilder<T extends object = E>(entity: EntityClass<T>): QueryBuilder<T, string>;
32
+ queryBuilder<T extends object = E>(alias: string): QueryBuilder<T, typeof alias>;
33
+ queryBuilder<T extends object = E>(): QueryBuilder<T, string>;
34
+ getFilterExpressionForTarget<T extends object = E>(query: Query<T, IdKey>): QBFilterQuery<T>[];
35
+ getConditionalForJoin<T extends object = E>(query: Query<T, IdKey>, key: string): QBFilterQuery;
36
+ private extractedResultOperand;
37
+ getFilterExpressionForRelation<T extends object = E>(query: Query<T, IdKey>): QBFilterQuery<T>[];
38
+ getKnex(): Knex<E, E[]>;
39
+ prePareQueryBuilder(queryBuilder: QueryBuilder<E>, query: Query<E, IdKey> | QueryOne<E, IdKey>): QueryBuilder<E>;
40
+ getPrimaryNameFor(rel: RelationKeys<E, IdKey>): EntityKey<E, false>;
41
+ private getFilterObject;
42
+ private getSubQueryForRelation;
43
+ private getInverseFieldForManyToMany;
44
+ createEntity(params: EntityData<E>): E;
45
+ asyncIterateFindRelationships(relationships: NonNullable<Relationships<E, IdKey>>): AsyncGenerator<RelationshipsResult<E>>;
46
+ saveEntity(targetInstance: E, relationships?: Relationships<E, IdKey>): Promise<E>;
47
+ validateRelationInputData<Rel extends RelationKeys<E, IdKey>, In extends InputValidateData | InputValidateData[]>(rel: Rel, inputData: In): Promise<ValidateReturn<In>>;
48
+ validateRelationInputData<Rel extends RelationKeys<E, IdKey>, In extends InputValidateData | InputValidateData[]>(rel: Rel, inputData: In): Promise<ValidateReturn<In>>;
49
+ validateRelationInputData<Rel extends RelationKeys<E, IdKey>, In extends null | InputValidateData | InputValidateData[]>(rel: Rel, inputData: In): Promise<ValidateReturn<In>>;
50
+ }
51
+ export {};