@gennext/lb-infra 0.3.0 → 0.3.4

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 (119) hide show
  1. package/README.md +414 -342
  2. package/dist/base/applications/default.application.d.ts.map +1 -1
  3. package/dist/base/applications/default.application.js +9 -0
  4. package/dist/base/applications/default.application.js.map +1 -1
  5. package/dist/base/base.sequence.js +3 -4
  6. package/dist/base/base.sequence.js.map +1 -1
  7. package/dist/base/controllers/common.d.ts +9 -0
  8. package/dist/base/controllers/common.d.ts.map +1 -1
  9. package/dist/base/controllers/common.js +20 -1
  10. package/dist/base/controllers/common.js.map +1 -1
  11. package/dist/base/controllers/crud.controller.d.ts +33 -22
  12. package/dist/base/controllers/crud.controller.d.ts.map +1 -1
  13. package/dist/base/controllers/crud.controller.js +20 -332
  14. package/dist/base/controllers/crud.controller.js.map +1 -1
  15. package/dist/base/controllers/crud.executor.d.ts +69 -0
  16. package/dist/base/controllers/crud.executor.d.ts.map +1 -0
  17. package/dist/base/controllers/crud.executor.js +140 -0
  18. package/dist/base/controllers/crud.executor.js.map +1 -0
  19. package/dist/base/controllers/crud.mixin.d.ts +77 -0
  20. package/dist/base/controllers/crud.mixin.d.ts.map +1 -0
  21. package/dist/base/controllers/crud.mixin.js +269 -0
  22. package/dist/base/controllers/crud.mixin.js.map +1 -0
  23. package/dist/base/controllers/index.d.ts +2 -0
  24. package/dist/base/controllers/index.d.ts.map +1 -1
  25. package/dist/base/controllers/index.js +2 -0
  26. package/dist/base/controllers/index.js.map +1 -1
  27. package/dist/base/controllers/kv.controller.js +2 -2
  28. package/dist/base/controllers/kv.controller.js.map +1 -1
  29. package/dist/base/controllers/relational.controller.d.ts.map +1 -1
  30. package/dist/base/controllers/relational.controller.js +67 -118
  31. package/dist/base/controllers/relational.controller.js.map +1 -1
  32. package/dist/base/controllers/service-crud.controller.d.ts +11 -10
  33. package/dist/base/controllers/service-crud.controller.d.ts.map +1 -1
  34. package/dist/base/controllers/service-crud.controller.js +24 -373
  35. package/dist/base/controllers/service-crud.controller.js.map +1 -1
  36. package/dist/base/repositories/base.repository.d.ts.map +1 -1
  37. package/dist/base/repositories/base.repository.js +2 -2
  38. package/dist/base/repositories/base.repository.js.map +1 -1
  39. package/dist/base/repositories/relations/has-many-polymorphic/factory.d.ts.map +1 -1
  40. package/dist/base/repositories/relations/has-many-polymorphic/factory.js +1 -5
  41. package/dist/base/repositories/relations/has-many-polymorphic/factory.js.map +1 -1
  42. package/dist/base/repositories/relations/has-many-through-polymorphic/factory.d.ts.map +1 -1
  43. package/dist/base/repositories/relations/has-many-through-polymorphic/factory.js +9 -10
  44. package/dist/base/repositories/relations/has-many-through-polymorphic/factory.js.map +1 -1
  45. package/dist/base/repositories/searchable-tz-crud.repository.d.ts.map +1 -1
  46. package/dist/base/repositories/searchable-tz-crud.repository.js +8 -9
  47. package/dist/base/repositories/searchable-tz-crud.repository.js.map +1 -1
  48. package/dist/base/repositories/tz-crud.repository.d.ts.map +1 -1
  49. package/dist/base/repositories/tz-crud.repository.js +3 -6
  50. package/dist/base/repositories/tz-crud.repository.js.map +1 -1
  51. package/dist/common/constants.d.ts +1 -0
  52. package/dist/common/constants.d.ts.map +1 -1
  53. package/dist/common/constants.js +1 -0
  54. package/dist/common/constants.js.map +1 -1
  55. package/dist/common/environments.d.ts +19 -0
  56. package/dist/common/environments.d.ts.map +1 -1
  57. package/dist/common/environments.js +104 -1
  58. package/dist/common/environments.js.map +1 -1
  59. package/dist/common/keys.d.ts +16 -0
  60. package/dist/common/keys.d.ts.map +1 -1
  61. package/dist/common/keys.js +23 -0
  62. package/dist/common/keys.js.map +1 -1
  63. package/dist/components/authenticate/component.js +1 -1
  64. package/dist/components/authenticate/component.js.map +1 -1
  65. package/dist/components/authenticate/controllers/auth.controller.d.ts +8 -0
  66. package/dist/components/authenticate/controllers/auth.controller.d.ts.map +1 -1
  67. package/dist/components/authenticate/controllers/auth.controller.js +9 -8
  68. package/dist/components/authenticate/controllers/auth.controller.js.map +1 -1
  69. package/dist/components/authenticate/controllers/oauth2.controller.d.ts +48 -16
  70. package/dist/components/authenticate/controllers/oauth2.controller.d.ts.map +1 -1
  71. package/dist/components/authenticate/controllers/oauth2.controller.js +4 -4
  72. package/dist/components/authenticate/controllers/oauth2.controller.js.map +1 -1
  73. package/dist/components/authenticate/oauth2-handlers/base.d.ts.map +1 -1
  74. package/dist/components/authenticate/oauth2-handlers/base.js +8 -12
  75. package/dist/components/authenticate/oauth2-handlers/base.js.map +1 -1
  76. package/dist/components/authenticate/oauth2-handlers/data/user-data-fetcher.d.ts.map +1 -1
  77. package/dist/components/authenticate/oauth2-handlers/data/user-data-fetcher.js +2 -1
  78. package/dist/components/authenticate/oauth2-handlers/data/user-data-fetcher.js.map +1 -1
  79. package/dist/components/authenticate/services/basic.strategy.d.ts.map +1 -1
  80. package/dist/components/authenticate/services/basic.strategy.js +4 -3
  81. package/dist/components/authenticate/services/basic.strategy.js.map +1 -1
  82. package/dist/components/authenticate/services/jwt.strategy.d.ts.map +1 -1
  83. package/dist/components/authenticate/services/jwt.strategy.js +4 -3
  84. package/dist/components/authenticate/services/jwt.strategy.js.map +1 -1
  85. package/dist/components/authenticate/services/oauth2-scope.service.d.ts.map +1 -1
  86. package/dist/components/authenticate/services/oauth2-scope.service.js +2 -1
  87. package/dist/components/authenticate/services/oauth2-scope.service.js.map +1 -1
  88. package/dist/components/authenticate/services/oauth2.service.js +1 -1
  89. package/dist/components/authenticate/services/oauth2.service.js.map +1 -1
  90. package/dist/components/crash-report/component.js +1 -1
  91. package/dist/components/crash-report/providers/provider.d.ts.map +1 -1
  92. package/dist/components/crash-report/providers/provider.js +5 -4
  93. package/dist/components/crash-report/providers/provider.js.map +1 -1
  94. package/dist/components/crash-report/services/{mt-crash-report.service.d.ts → gn-crash-report.service.d.ts} +2 -2
  95. package/dist/components/crash-report/services/{mt-crash-report.service.d.ts.map → gn-crash-report.service.d.ts.map} +1 -1
  96. package/dist/components/crash-report/services/{mt-crash-report.service.js → gn-crash-report.service.js} +6 -7
  97. package/dist/components/crash-report/services/gn-crash-report.service.js.map +1 -0
  98. package/dist/components/crash-report/services/index.d.ts +1 -1
  99. package/dist/components/crash-report/services/index.js +1 -1
  100. package/dist/components/grpc/helpers/grpc-server.d.ts.map +1 -1
  101. package/dist/components/grpc/helpers/grpc-server.js +4 -6
  102. package/dist/components/grpc/helpers/grpc-server.js.map +1 -1
  103. package/dist/components/migration/component.d.ts.map +1 -1
  104. package/dist/components/migration/component.js +0 -4
  105. package/dist/components/migration/component.js.map +1 -1
  106. package/dist/datasources/postgres/datasource.js +1 -2
  107. package/dist/datasources/postgres/datasource.js.map +1 -1
  108. package/dist/helpers/testing/test-case.js +1 -2
  109. package/dist/helpers/testing/test-case.js.map +1 -1
  110. package/dist/interceptors/content-range.interceptor.d.ts.map +1 -1
  111. package/dist/interceptors/content-range.interceptor.js +6 -5
  112. package/dist/interceptors/content-range.interceptor.js.map +1 -1
  113. package/dist/migrations/handler.js +1 -1
  114. package/dist/migrations/handler.js.map +1 -1
  115. package/dist/utilities/parse.utility.d.ts.map +1 -1
  116. package/dist/utilities/parse.utility.js +1 -2
  117. package/dist/utilities/parse.utility.js.map +1 -1
  118. package/package.json +1 -1
  119. package/dist/components/crash-report/services/mt-crash-report.service.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"default.application.d.ts","sourceRoot":"","sources":["../../../src/base/applications/default.application.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgC,4BAA4B,EAAE,MAAM,UAAU,CAAC;AAOtF,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAgB,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAE/D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,8BAAsB,sBAAuB,SAAQ,eAAe;IAClE,SAAS,CAAC,gBAAgB,EAAE,MAAM,EAAE,CAAM;gBAE9B,IAAI,EAAE;QAAE,aAAa,EAAE,iBAAiB,CAAC;QAAC,QAAQ,CAAC,EAAE,WAAW,CAAC,eAAe,CAAC,CAAA;KAAE;IAI/F,mBAAmB;IAKnB,WAAW,IAAI,4BAA4B;IAkB3C,aAAa,IAAI,GAAG,CAAC,MAAM,CAAC;IAI5B,kBAAkB;IAKlB,YAAY,IAAI,IAAI;CAkCrB"}
1
+ {"version":3,"file":"default.application.d.ts","sourceRoot":"","sources":["../../../src/base/applications/default.application.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,4BAA4B,EAE7B,MAAM,UAAU,CAAC;AAOlB,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAgB,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAE/D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,8BAAsB,sBAAuB,SAAQ,eAAe;IAClE,SAAS,CAAC,gBAAgB,EAAE,MAAM,EAAE,CAAM;gBAE9B,IAAI,EAAE;QAAE,aAAa,EAAE,iBAAiB,CAAC;QAAC,QAAQ,CAAC,EAAE,WAAW,CAAC,eAAe,CAAC,CAAA;KAAE;IAI/F,mBAAmB;IAKnB,WAAW,IAAI,4BAA4B;IA6B3C,aAAa,IAAI,GAAG,CAAC,MAAM,CAAC;IAI5B,kBAAkB;IAKlB,YAAY,IAAI,IAAI;CAkCrB"}
@@ -24,6 +24,14 @@ class DefaultRestApplication extends base_application_1.BaseApplication {
24
24
  return roleConf?.split(',')?.map((el) => el.trim());
25
25
  }
26
26
  validateEnv() {
27
+ const envsObj = {};
28
+ for (const key of helpers_1.applicationEnvironment.keys()) {
29
+ envsObj[key] = helpers_1.applicationEnvironment.get(key);
30
+ }
31
+ const schemaValidation = (0, common_1.validateEnvironment)(envsObj);
32
+ if (!schemaValidation.result) {
33
+ return schemaValidation;
34
+ }
27
35
  const rs = { result: true, message: '' };
28
36
  const envKeys = helpers_1.applicationEnvironment.keys();
29
37
  for (const argKey of envKeys) {
@@ -33,6 +41,7 @@ class DefaultRestApplication extends base_application_1.BaseApplication {
33
41
  }
34
42
  rs.result = false;
35
43
  rs.message = `Invalid Application Environment! Key: ${argKey} | Value: ${argValue}`;
44
+ return rs;
36
45
  }
37
46
  return rs;
38
47
  }
@@ -1 +1 @@
1
- {"version":3,"file":"default.application.js","sourceRoot":"","sources":["../../../src/base/applications/default.application.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"default.application.js","sourceRoot":"","sources":["../../../src/base/applications/default.application.ts"],"names":[],"mappings":"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"}
@@ -11,7 +11,6 @@ var __metadata = (this && this.__metadata) || function (k, v) {
11
11
  var __param = (this && this.__param) || function (paramIndex, decorator) {
12
12
  return function (target, key) { decorator(target, key, paramIndex); }
13
13
  };
14
- var BaseApplicationSequence_1;
15
14
  Object.defineProperty(exports, "__esModule", { value: true });
16
15
  exports.BaseApplicationSequence = void 0;
17
16
  const core_1 = require("@loopback/core");
@@ -19,11 +18,11 @@ const rest_1 = require("@loopback/rest");
19
18
  const common_1 = require("../common");
20
19
  const helpers_1 = require("../helpers");
21
20
  const utilities_1 = require("../utilities");
22
- let BaseApplicationSequence = BaseApplicationSequence_1 = class BaseApplicationSequence {
21
+ let BaseApplicationSequence = class BaseApplicationSequence {
23
22
  constructor(invokeMiddleware, middlewareOptions) {
24
23
  this.invokeMiddleware = invokeMiddleware;
25
24
  this.middlewareOptions = middlewareOptions;
26
- this.logger = helpers_1.LoggerFactory.getLogger([BaseApplicationSequence_1.name]);
25
+ this.logger = helpers_1.LoggerFactory.getLogger([this.constructor.name]);
27
26
  }
28
27
  // ----------------------------------------------------------------------------------------
29
28
  async handle(context) {
@@ -43,7 +42,7 @@ let BaseApplicationSequence = BaseApplicationSequence_1 = class BaseApplicationS
43
42
  }
44
43
  };
45
44
  exports.BaseApplicationSequence = BaseApplicationSequence;
46
- exports.BaseApplicationSequence = BaseApplicationSequence = BaseApplicationSequence_1 = __decorate([
45
+ exports.BaseApplicationSequence = BaseApplicationSequence = __decorate([
47
46
  __param(0, (0, core_1.inject)(rest_1.SequenceActions.INVOKE_MIDDLEWARE)),
48
47
  __param(1, (0, core_1.inject)(common_1.BindingKeys.APPLICATION_MIDDLEWARE_OPTIONS)),
49
48
  __metadata("design:paramtypes", [Function, Object])
@@ -1 +1 @@
1
- {"version":3,"file":"base.sequence.js","sourceRoot":"","sources":["../../src/base/base.sequence.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yCAAwC;AACxC,yCAMwB;AAExB,qCAAuC;AACvC,uCAA6D;AAC7D,2CAAqF;AAErF,IAAa,uBAAuB,+BAApC,MAAa,uBAAuB;IAGlC,YAEY,gBAAkC,EAGlC,iBAA0C;QAH1C,qBAAgB,GAAhB,gBAAgB,CAAkB;QAGlC,sBAAiB,GAAjB,iBAAiB,CAAyB;QAEpD,IAAI,CAAC,MAAM,GAAG,uBAAa,CAAC,SAAS,CAAC,CAAC,yBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC;IACxE,CAAC;IAED,2FAA2F;IAC3F,KAAK,CAAC,MAAM,CAAC,OAAuB;QAClC,MAAM,CAAC,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAC5B,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;QAE5B,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC/D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,SAAS,GAAG,IAAA,wBAAY,EAAC,EAAE,OAAO,EAAE,CAAC,CAAC;YAC5C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QACxE,CAAC;gBAAS,CAAC;YACT,MAAM,eAAe,GAAG,IAAA,4BAAgB,EAAC,EAAE,OAAO,EAAE,CAAC,CAAC;YACtD,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,4CAA4C,EAC5C,eAAe,EAAE,EAAE,EACnB,IAAA,kCAAsB,EAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAC7C,eAAe,EAAE,GAAG,CACrB,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAA;AAjCY,0DAAuB;kCAAvB,uBAAuB;IAI/B,WAAA,IAAA,aAAM,EAAC,sBAAe,CAAC,iBAAiB,CAAC,CAAA;IAGzC,WAAA,IAAA,aAAM,EAAC,oBAAW,CAAC,8BAA8B,CAAC,CAAA;;GAP1C,uBAAuB,CAiCnC"}
1
+ {"version":3,"file":"base.sequence.js","sourceRoot":"","sources":["../../src/base/base.sequence.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,yCAAwC;AACxC,yCAMwB;AAExB,qCAAuC;AACvC,uCAA6D;AAC7D,2CAAqF;AAErF,IAAa,uBAAuB,GAApC,MAAa,uBAAuB;IAGlC,YAEY,gBAAkC,EAGlC,iBAA0C;QAH1C,qBAAgB,GAAhB,gBAAgB,CAAkB;QAGlC,sBAAiB,GAAjB,iBAAiB,CAAyB;QAEpD,IAAI,CAAC,MAAM,GAAG,uBAAa,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;IACjE,CAAC;IAED,2FAA2F;IAC3F,KAAK,CAAC,MAAM,CAAC,OAAuB;QAClC,MAAM,CAAC,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAC5B,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;QAE5B,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC/D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,SAAS,GAAG,IAAA,wBAAY,EAAC,EAAE,OAAO,EAAE,CAAC,CAAC;YAC5C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QACxE,CAAC;gBAAS,CAAC;YACT,MAAM,eAAe,GAAG,IAAA,4BAAgB,EAAC,EAAE,OAAO,EAAE,CAAC,CAAC;YACtD,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,4CAA4C,EAC5C,eAAe,EAAE,EAAE,EACnB,IAAA,kCAAsB,EAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAC7C,eAAe,EAAE,GAAG,CACrB,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAA;AAjCY,0DAAuB;kCAAvB,uBAAuB;IAI/B,WAAA,IAAA,aAAM,EAAC,sBAAe,CAAC,iBAAiB,CAAC,CAAA;IAGzC,WAAA,IAAA,aAAM,EAAC,oBAAW,CAAC,8BAA8B,CAAC,CAAA;;GAP1C,uBAAuB,CAiCnC"}
@@ -1,5 +1,6 @@
1
1
  import { Filter } from '@loopback/repository';
2
2
  import { IController } from '../../common';
3
+ import { IdType } from '../../common/types';
3
4
  import { ApplicationLogger } from '../../helpers';
4
5
  import { BaseEntity } from '../models';
5
6
  export declare const applyLimit: <E extends BaseEntity>(filter?: Filter<E>) => Filter<E>;
@@ -10,5 +11,13 @@ export declare class BaseController implements IController {
10
11
  scope?: string;
11
12
  defaultLimit?: number;
12
13
  });
14
+ _getContextUser(): Promise<{
15
+ userId: IdType;
16
+ roles: Array<{
17
+ id: IdType;
18
+ identifier: string;
19
+ priority: number;
20
+ }>;
21
+ } | null>;
13
22
  }
14
23
  //# sourceMappingURL=common.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../src/base/controllers/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,OAAO,EAAO,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAiB,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAGvC,eAAO,MAAM,UAAU,GAAI,CAAC,SAAS,UAAU,EAAE,SAAS,MAAM,CAAC,CAAC,CAAC,cAOlE,CAAC;AAGF,qBAAa,cAAe,YAAW,WAAW;IAChD,MAAM,EAAE,iBAAiB,CAAC;IAC1B,YAAY,EAAE,MAAM,CAA2B;gBAEnC,IAAI,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE;CAI5D"}
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../src/base/controllers/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,OAAO,EAAO,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAiB,MAAM,WAAW,CAAC;AAE7D,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAGvC,eAAO,MAAM,UAAU,GAAI,CAAC,SAAS,UAAU,EAAE,SAAS,MAAM,CAAC,CAAC,CAAC,cAWlE,CAAC;AAGF,qBAAa,cAAe,YAAW,WAAW;IAChD,MAAM,EAAE,iBAAiB,CAAC;IAE1B,YAAY,EAAE,MAAM,CAA2B;gBAEnC,IAAI,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE;IAKrD,eAAe,IAAI,OAAO,CAAC;QAC/B,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,KAAK,CAAC;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACpE,GAAG,IAAI,CAAC;CAeV"}
@@ -3,12 +3,18 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.BaseController = exports.applyLimit = void 0;
4
4
  const common_1 = require("../../common");
5
5
  const helpers_1 = require("../../helpers");
6
+ const utilities_1 = require("../../utilities");
6
7
  // --------------------------------------------------------------------------------------------------------------
7
8
  const applyLimit = (filter) => {
8
9
  const rs = {
9
10
  ...(filter ?? {}),
10
11
  };
11
- rs['limit'] = rs['limit'] ?? common_1.App.DEFAULT_QUERY_LIMIT;
12
+ if (rs['limit'] === undefined) {
13
+ rs['limit'] = common_1.App.DEFAULT_QUERY_LIMIT;
14
+ }
15
+ else if (rs['limit'] > common_1.App.MAX_QUERY_LIMIT) {
16
+ rs['limit'] = common_1.App.MAX_QUERY_LIMIT;
17
+ }
12
18
  return rs;
13
19
  };
14
20
  exports.applyLimit = applyLimit;
@@ -19,6 +25,19 @@ class BaseController {
19
25
  this.logger = helpers_1.LoggerFactory.getLogger([opts?.scope ?? BaseController.name]);
20
26
  this.defaultLimit = opts?.defaultLimit ?? common_1.App.DEFAULT_QUERY_LIMIT;
21
27
  }
28
+ async _getContextUser() {
29
+ const getCurrentUser = this.getCurrentUser;
30
+ if (!getCurrentUser) {
31
+ return null;
32
+ }
33
+ if (typeof getCurrentUser !== 'function') {
34
+ throw (0, utilities_1.getError)({
35
+ statusCode: 500,
36
+ message: `[${this.constructor.name}][_getContextUser] Invalid getCurrentUser type | Please check again the parameter in constructor!`,
37
+ });
38
+ }
39
+ return getCurrentUser();
40
+ }
22
41
  }
23
42
  exports.BaseController = BaseController;
24
43
  //# sourceMappingURL=common.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"common.js","sourceRoot":"","sources":["../../../src/base/controllers/common.ts"],"names":[],"mappings":";;;AAEA,qCAA4C;AAC5C,uCAA6D;AAG7D,iHAAiH;AAC1G,MAAM,UAAU,GAAG,CAAuB,MAAkB,EAAE,EAAE;IACrE,MAAM,EAAE,GAAc;QACpB,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC;KAClB,CAAC;IAEF,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,YAAG,CAAC,mBAAmB,CAAC;IACrD,OAAO,EAAE,CAAC;AACZ,CAAC,CAAC;AAPW,QAAA,UAAU,cAOrB;AAEF,iHAAiH;AACjH,MAAa,cAAc;IAIzB,YAAY,IAA+C;QAF3D,iBAAY,GAAW,YAAG,CAAC,mBAAmB,CAAC;QAG7C,IAAI,CAAC,MAAM,GAAG,uBAAa,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,KAAK,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5E,IAAI,CAAC,YAAY,GAAG,IAAI,EAAE,YAAY,IAAI,YAAG,CAAC,mBAAmB,CAAC;IACpE,CAAC;CACF;AARD,wCAQC"}
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../../src/base/controllers/common.ts"],"names":[],"mappings":";;;AAEA,qCAA4C;AAE5C,uCAA6D;AAC7D,2CAAuC;AAGvC,iHAAiH;AAC1G,MAAM,UAAU,GAAG,CAAuB,MAAkB,EAAE,EAAE;IACrE,MAAM,EAAE,GAAc;QACpB,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC;KAClB,CAAC;IAEF,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,SAAS,EAAE,CAAC;QAC9B,EAAE,CAAC,OAAO,CAAC,GAAG,YAAG,CAAC,mBAAmB,CAAC;IACxC,CAAC;SAAM,IAAI,EAAE,CAAC,OAAO,CAAC,GAAG,YAAG,CAAC,eAAe,EAAE,CAAC;QAC7C,EAAE,CAAC,OAAO,CAAC,GAAG,YAAG,CAAC,eAAe,CAAC;IACpC,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC,CAAC;AAXW,QAAA,UAAU,cAWrB;AAEF,iHAAiH;AACjH,MAAa,cAAc;IAKzB,YAAY,IAA+C;QAF3D,iBAAY,GAAW,YAAG,CAAC,mBAAmB,CAAC;QAG7C,IAAI,CAAC,MAAM,GAAG,uBAAa,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,KAAK,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5E,IAAI,CAAC,YAAY,GAAG,IAAI,EAAE,YAAY,IAAI,YAAG,CAAC,mBAAmB,CAAC;IACpE,CAAC;IAED,KAAK,CAAC,eAAe;QAInB,MAAM,cAAc,GAAI,IAAY,CAAC,cAAc,CAAC;QACpD,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,OAAO,cAAc,KAAK,UAAU,EAAE,CAAC;YACzC,MAAM,IAAA,oBAAQ,EAAC;gBACb,UAAU,EAAE,GAAG;gBACf,OAAO,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,mGAAmG;aACtI,CAAC,CAAC;QACL,CAAC;QAED,OAAO,cAAc,EAAE,CAAC;IAC1B,CAAC;CACF;AA5BD,wCA4BC"}
@@ -1,8 +1,7 @@
1
1
  import { Getter } from '@loopback/core';
2
- import { Count, Filter, FilterExcludingWhere, Where } from '@loopback/repository';
3
2
  import { SchemaRef } from '@loopback/rest';
4
3
  import { CrudRestControllerOptions } from '@loopback/rest-crud';
5
- import { EntityRelationType, IdType } from '../../common/types';
4
+ import { EntityRelationType } from '../../common/types';
6
5
  import { IJWTTokenPayload } from '../../components/authenticate/common/types';
7
6
  import { BaseEntity } from '../models';
8
7
  import { DefaultCrudRepository } from '../repositories';
@@ -35,36 +34,48 @@ export interface ICrudControllerOptions<E extends BaseEntity> {
35
34
  export declare const defineCrudController: <E extends BaseEntity>(opts: ICrudControllerOptions<E>) => {
36
35
  new (repository: DefaultCrudRepository<E, EntityRelationType>): {
37
36
  repository: DefaultCrudRepository<E, EntityRelationType>;
37
+ executor: import("./crud.executor").CrudExecutor<E>;
38
+ find(filter?: import("@loopback/repository").Filter<E> | undefined): Promise<(E & EntityRelationType)[]>;
39
+ findById(id: import("../../common").IdType, filter?: import("@loopback/repository").FilterExcludingWhere<E> | undefined): Promise<E & EntityRelationType>;
40
+ findOne(filter?: import("@loopback/repository").Filter<E> | undefined): Promise<(E & EntityRelationType) | null>;
41
+ count(where?: import("@loopback/repository").Where<E> | undefined): Promise<import("@loopback/repository").Count>;
42
+ logger: import("../..").ApplicationLogger;
38
43
  defaultLimit: number;
39
- find(filter?: Filter<E>): Promise<(E & EntityRelationType)[]>;
40
- findById(id: IdType, filter?: FilterExcludingWhere<E>): Promise<E & EntityRelationType>;
41
- findOne(filter?: Filter<E>): Promise<(E & EntityRelationType) | null>;
42
- count(where?: Where<E>): Promise<Count>;
44
+ _getContextUser(): Promise<{
45
+ userId: import("../../common").IdType;
46
+ roles: Array<{
47
+ id: import("../../common").IdType;
48
+ identifier: string;
49
+ priority: number;
50
+ }>;
51
+ } | null>;
43
52
  };
44
53
  } | {
45
54
  new (repository: DefaultCrudRepository<E, EntityRelationType>, getCurrentUser?: Getter<IJWTTokenPayload>): {
46
55
  getCurrentUser?: Getter<IJWTTokenPayload>;
56
+ executor: import("./crud.executor").CrudExecutor<E>;
57
+ create(data: Omit<E, "id">): Promise<E>;
58
+ updateAll(data: Partial<E>, where?: import("@loopback/repository").Where<E> | undefined): Promise<import("@loopback/repository").Count>;
59
+ updateById(id: import("../../common").IdType, data: Partial<E>): Promise<E>;
60
+ replaceById(id: import("../../common").IdType, data: E): Promise<E>;
61
+ deleteById(id: import("../../common").IdType): Promise<{
62
+ id: import("../../common").IdType;
63
+ }>;
64
+ logger: import("../..").ApplicationLogger;
65
+ defaultLimit: number;
47
66
  _getContextUser(): Promise<{
48
- userId: IdType;
49
- roles: {
50
- id: IdType;
67
+ userId: import("../../common").IdType;
68
+ roles: Array<{
69
+ id: import("../../common").IdType;
51
70
  identifier: string;
52
71
  priority: number;
53
- }[];
72
+ }>;
54
73
  } | null>;
55
- create(data: Omit<E, "id">): Promise<E>;
56
- updateAll(data: Partial<E>, where?: Where<E>): Promise<Count>;
57
- updateById(id: IdType, data: Partial<E>): Promise<E>;
58
- replaceById(id: IdType, data: E): Promise<E>;
59
- deleteById(id: IdType): Promise<{
60
- id: IdType;
61
- }>;
62
74
  repository: DefaultCrudRepository<E, EntityRelationType>;
63
- defaultLimit: number;
64
- find(filter?: Filter<E>): Promise<(E & EntityRelationType)[]>;
65
- findById(id: IdType, filter?: FilterExcludingWhere<E>): Promise<E & EntityRelationType>;
66
- findOne(filter?: Filter<E>): Promise<(E & EntityRelationType) | null>;
67
- count(where?: Where<E>): Promise<Count>;
75
+ find(filter?: import("@loopback/repository").Filter<E> | undefined): Promise<(E & EntityRelationType)[]>;
76
+ findById(id: import("../../common").IdType, filter?: import("@loopback/repository").FilterExcludingWhere<E> | undefined): Promise<E & EntityRelationType>;
77
+ findOne(filter?: import("@loopback/repository").Filter<E> | undefined): Promise<(E & EntityRelationType) | null>;
78
+ count(where?: import("@loopback/repository").Where<E> | undefined): Promise<import("@loopback/repository").Count>;
68
79
  };
69
80
  };
70
81
  //# sourceMappingURL=crud.controller.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"crud.controller.d.ts","sourceRoot":"","sources":["../../../src/base/controllers/crud.controller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"crud.controller.d.ts","sourceRoot":"","sources":["../../../src/base/controllers/crud.controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAU,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAmB,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAGhE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAG1E,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAMxD,MAAM,WAAW,sBAAsB,CAAC,CAAC,SAAS,UAAU;IAC1D,MAAM,EAAE,OAAO,UAAU,GAAG;QAAE,SAAS,EAAE,CAAC,CAAA;KAAE,CAAC;IAC7C,UAAU,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7B,UAAU,EAAE,yBAAyB,GAAG;QAAE,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAClE,MAAM,CAAC,EAAE;QACP,IAAI,CAAC,EAAE,SAAS,CAAC;QACjB,OAAO,CAAC,EAAE,SAAS,CAAC;QACpB,QAAQ,CAAC,EAAE,SAAS,CAAC;QACrB,KAAK,CAAC,EAAE,SAAS,CAAC;QAClB,iBAAiB,CAAC,EAAE,SAAS,CAAC;QAC9B,MAAM,CAAC,EAAE,SAAS,CAAC;QACnB,SAAS,CAAC,EAAE,SAAS,CAAC;QACtB,qBAAqB,CAAC,EAAE,SAAS,CAAC;QAClC,UAAU,CAAC,EAAE,SAAS,CAAC;QACvB,WAAW,CAAC,EAAE,SAAS,CAAC;QACxB,UAAU,CAAC,EAAE,SAAS,CAAC;KACxB,CAAC;IACF,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAGD,eAAO,MAAM,oBAAoB,GAAI,CAAC,SAAS,UAAU,EAAE,MAAM,sBAAsB,CAAC,CAAC,CAAC;qBAyB9D,qBAAqB,CAAC,CAAC,EAAE,kBAAkB,CAAC;oBAFxD,qBAAqB,CAAC,CAAC,EAAE,kBAAkB,CAAC;;;;;;;;;;;;;;;;;;qBA6B1C,qBAAqB,CAAC,CAAC,EAAE,kBAAkB,CAAC,mBACvC,MAAM,CAAC,gBAAgB,CAAC;yBAJ1B,MAAM,CAAC,gBAAgB,CAAC;;;;;;;;;;;;;;;;;;;oBA1B7B,qBAAqB,CAAC,CAAC,EAAE,kBAAkB,CAAC;;;;;;CA+C3D,CAAC"}
@@ -1,25 +1,13 @@
1
1
  "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
- var __param = (this && this.__param) || function (paramIndex, decorator) {
12
- return function (target, key) { decorator(target, key, paramIndex); }
13
- };
14
2
  Object.defineProperty(exports, "__esModule", { value: true });
15
3
  exports.defineCrudController = void 0;
16
4
  const core_1 = require("@loopback/core");
17
- const repository_1 = require("@loopback/repository");
18
- const rest_1 = require("@loopback/rest");
19
5
  const common_1 = require("../../common");
20
6
  const model_utility_1 = require("../../utilities/model.utility");
21
7
  const security_1 = require("@loopback/security");
22
8
  const common_2 = require("./common");
9
+ const crud_executor_1 = require("./crud.executor");
10
+ const crud_mixin_1 = require("./crud.mixin");
23
11
  // --------------------------------------------------------------------------------------------------------------
24
12
  const defineCrudController = (opts) => {
25
13
  const { entity: entityOptions, repository: repositoryOptions, controller: controllerOptions, schema: schemaOptions, doInjectCurrentUser, doDeleteWithReturn, } = opts;
@@ -28,340 +16,40 @@ const defineCrudController = (opts) => {
28
16
  in: 'path',
29
17
  schema: (0, model_utility_1.getIdSchema)(entityOptions),
30
18
  };
31
- class ReadController {
19
+ const MixinReadController = (0, crud_mixin_1.CrudReadMixin)(common_2.BaseController, {
20
+ entity: entityOptions,
21
+ schema: schemaOptions,
22
+ idPathParam,
23
+ });
24
+ class ReadController extends MixinReadController {
32
25
  constructor(repository) {
26
+ super({ scope: `ReadController.${entityOptions.name}` });
33
27
  this.repository = repository;
28
+ this.executor = new crud_executor_1.RepositoryCrudExecutor(repository, {});
34
29
  this.defaultLimit = controllerOptions?.defaultLimit ?? common_1.App.DEFAULT_QUERY_LIMIT;
35
30
  }
36
- // ----------------------------------------------------------------------------------------------------------
37
- find(filter) {
38
- return this.repository.find((0, common_2.applyLimit)(filter));
39
- }
40
- // ----------------------------------------------------------------------------------------------------------
41
- findById(id, filter) {
42
- return this.repository.findById(id, (0, common_2.applyLimit)(filter));
43
- }
44
- // ----------------------------------------------------------------------------------------------------------
45
- findOne(filter) {
46
- return this.repository.findOne(filter);
47
- }
48
- // ----------------------------------------------------------------------------------------------------------
49
- count(where) {
50
- return this.repository.count(where);
51
- }
52
31
  }
53
- __decorate([
54
- (0, rest_1.get)('/', {
55
- responses: {
56
- '200': {
57
- description: `Array of ${entityOptions.name} model instances`,
58
- content: {
59
- 'application/json': {
60
- schema: {
61
- type: 'array',
62
- items: schemaOptions?.find ??
63
- (0, rest_1.getModelSchemaRef)(entityOptions, { includeRelations: true }),
64
- },
65
- },
66
- },
67
- },
68
- },
69
- }),
70
- __param(0, rest_1.param.filter(entityOptions)),
71
- __metadata("design:type", Function),
72
- __metadata("design:paramtypes", [Object]),
73
- __metadata("design:returntype", Promise)
74
- ], ReadController.prototype, "find", null);
75
- __decorate([
76
- (0, rest_1.get)('/{id}', {
77
- responses: {
78
- '200': {
79
- description: `Find ${entityOptions.name} model instance`,
80
- content: {
81
- 'application/json': {
82
- schema: schemaOptions?.findById ??
83
- (0, rest_1.getModelSchemaRef)(entityOptions, { includeRelations: true }),
84
- },
85
- },
86
- },
87
- },
88
- }),
89
- __param(0, (0, rest_1.param)(idPathParam)),
90
- __param(1, rest_1.param.query.object('filter', (0, rest_1.getFilterSchemaFor)(entityOptions, { exclude: 'where' }))),
91
- __metadata("design:type", Function),
92
- __metadata("design:paramtypes", [Object, Object]),
93
- __metadata("design:returntype", Promise)
94
- ], ReadController.prototype, "findById", null);
95
- __decorate([
96
- (0, rest_1.get)('/find-one', {
97
- responses: {
98
- '200': {
99
- description: `Find one ${entityOptions.name} model instance`,
100
- content: {
101
- 'application/json': {
102
- schema: schemaOptions?.findOne ??
103
- (0, rest_1.getModelSchemaRef)(entityOptions, { includeRelations: true }),
104
- },
105
- },
106
- },
107
- },
108
- }),
109
- __param(0, rest_1.param.query.object('filter', (0, rest_1.getFilterSchemaFor)(entityOptions))),
110
- __metadata("design:type", Function),
111
- __metadata("design:paramtypes", [Object]),
112
- __metadata("design:returntype", Promise)
113
- ], ReadController.prototype, "findOne", null);
114
- __decorate([
115
- (0, rest_1.get)('/count', {
116
- responses: {
117
- '200': {
118
- description: `Count number of ${entityOptions.name} model instance`,
119
- content: {
120
- 'application/json': {
121
- schema: repository_1.CountSchema,
122
- },
123
- },
124
- },
125
- },
126
- }),
127
- __param(0, rest_1.param.where(entityOptions)),
128
- __metadata("design:type", Function),
129
- __metadata("design:paramtypes", [Object]),
130
- __metadata("design:returntype", Promise)
131
- ], ReadController.prototype, "count", null);
132
32
  if (controllerOptions.readonly) {
133
33
  if (repositoryOptions?.name) {
134
- (0, core_1.inject)(`repositories.${repositoryOptions.name}`)(ReadController, undefined, 0);
34
+ (0, core_1.inject)(common_1.BindingKeys.repositoryFor(repositoryOptions.name))(ReadController, undefined, 0);
135
35
  }
136
36
  return ReadController;
137
37
  }
138
- class CrudController extends ReadController {
38
+ const MixinCrudController = (0, crud_mixin_1.CrudWriteMixin)(ReadController, {
39
+ entity: entityOptions,
40
+ schema: schemaOptions,
41
+ idPathParam,
42
+ doDeleteWithReturn,
43
+ });
44
+ class CrudController extends MixinCrudController {
139
45
  constructor(repository, getCurrentUser) {
140
46
  super(repository);
141
47
  this.getCurrentUser = getCurrentUser;
142
- }
143
- // ----------------------------------------------------------------------------------------------------------
144
- _getContextUser() {
145
- return new Promise((resolve, reject) => {
146
- if (!this.getCurrentUser) {
147
- resolve(null);
148
- return;
149
- }
150
- this.getCurrentUser().then(resolve).catch(reject);
151
- });
152
- }
153
- // ----------------------------------------------------------------------------------------------------------
154
- create(data) {
155
- return new Promise((resolve, reject) => {
156
- this._getContextUser()
157
- .then(currentUser => {
158
- this.repository
159
- .create(data, {
160
- authorId: currentUser?.userId,
161
- })
162
- .then(resolve)
163
- .catch(reject);
164
- })
165
- .catch(reject);
166
- });
167
- }
168
- // ----------------------------------------------------------------------------------------------------------
169
- updateAll(data, where) {
170
- return new Promise((resolve, reject) => {
171
- this._getContextUser().then(currentUser => {
172
- this.repository
173
- .updateAll(data, where, {
174
- authorId: currentUser?.userId,
175
- })
176
- .then(resolve)
177
- .catch(reject);
178
- });
179
- });
180
- }
181
- // ----------------------------------------------------------------------------------------------------------
182
- updateById(id, data) {
183
- return new Promise((resolve, reject) => {
184
- this._getContextUser().then(currentUser => {
185
- this.repository
186
- .updateWithReturn(id, data, {
187
- authorId: currentUser?.userId,
188
- })
189
- .then(resolve)
190
- .catch(reject);
191
- });
192
- });
193
- }
194
- // ----------------------------------------------------------------------------------------------------------
195
- async replaceById(id, data) {
196
- return new Promise((resolve, reject) => {
197
- this._getContextUser().then(currentUser => {
198
- this.repository
199
- .replaceById(id, data, {
200
- authorId: currentUser?.userId,
201
- })
202
- .then(() => {
203
- resolve({ ...data, id });
204
- })
205
- .catch(reject);
206
- });
207
- });
208
- }
209
- // ----------------------------------------------------------------------------------------------------------
210
- deleteById(id) {
211
- return new Promise((resolve, reject) => {
212
- if (doDeleteWithReturn) {
213
- this.repository
214
- .deleteWithReturn({ id })
215
- .then(() => {
216
- resolve({ id });
217
- })
218
- .catch(reject);
219
- }
220
- else {
221
- this.repository
222
- .deleteById(id)
223
- .then(() => {
224
- resolve({ id });
225
- })
226
- .catch(reject);
227
- }
228
- });
48
+ this.executor = new crud_executor_1.RepositoryCrudExecutor(repository, { getCurrentUser });
229
49
  }
230
50
  }
231
- __decorate([
232
- (0, rest_1.post)('/', {
233
- responses: {
234
- '200': {
235
- description: `Create ${entityOptions.name} model instance`,
236
- content: {
237
- 'application/json': {
238
- schema: schemaOptions?.create ?? (0, rest_1.getModelSchemaRef)(entityOptions),
239
- },
240
- },
241
- },
242
- },
243
- }),
244
- __param(0, (0, rest_1.requestBody)({
245
- content: {
246
- 'application/json': {
247
- schema: schemaOptions?.createRequestBody ??
248
- (0, rest_1.getModelSchemaRef)(entityOptions, {
249
- title: `New ${entityOptions.name} payload`,
250
- // exclude: ['id', 'createdAt', 'modifiedAt'],
251
- }),
252
- },
253
- },
254
- })),
255
- __metadata("design:type", Function),
256
- __metadata("design:paramtypes", [Object]),
257
- __metadata("design:returntype", Promise)
258
- ], CrudController.prototype, "create", null);
259
- __decorate([
260
- (0, rest_1.patch)('/', {
261
- responses: {
262
- '200': {
263
- description: `Number of updated ${entityOptions.name} models`,
264
- content: {
265
- 'application/json': {
266
- schema: repository_1.CountSchema,
267
- },
268
- },
269
- },
270
- },
271
- }),
272
- __param(0, (0, rest_1.requestBody)({
273
- content: {
274
- 'application/json': {
275
- schema: schemaOptions?.updateAll ??
276
- (0, rest_1.getModelSchemaRef)(entityOptions, {
277
- title: `Partial fields of ${entityOptions.name}`,
278
- partial: true,
279
- }),
280
- },
281
- },
282
- })),
283
- __param(1, rest_1.param.where(entityOptions)),
284
- __metadata("design:type", Function),
285
- __metadata("design:paramtypes", [Object, Object]),
286
- __metadata("design:returntype", Promise)
287
- ], CrudController.prototype, "updateAll", null);
288
- __decorate([
289
- (0, rest_1.patch)('/{id}', {
290
- responses: {
291
- '200': {
292
- description: `Updated ${entityOptions.name} models`,
293
- content: {
294
- 'application/json': {
295
- schema: schemaOptions?.updateById ??
296
- (0, rest_1.getModelSchemaRef)(entityOptions, {
297
- title: `Updated ${entityOptions.name} models`,
298
- }),
299
- },
300
- },
301
- },
302
- },
303
- }),
304
- __param(0, (0, rest_1.param)(idPathParam)),
305
- __param(1, (0, rest_1.requestBody)({
306
- content: {
307
- 'application/json': {
308
- schema: schemaOptions?.updateByIdRequestBody ??
309
- (0, rest_1.getModelSchemaRef)(entityOptions, {
310
- title: `Partial fields of ${entityOptions.name}`,
311
- partial: true,
312
- }),
313
- },
314
- },
315
- })),
316
- __metadata("design:type", Function),
317
- __metadata("design:paramtypes", [Object, Object]),
318
- __metadata("design:returntype", Promise)
319
- ], CrudController.prototype, "updateById", null);
320
- __decorate([
321
- (0, rest_1.put)('/{id}', {
322
- responses: {
323
- '204': { description: `${entityOptions.name} was replaced` },
324
- },
325
- }),
326
- __param(0, (0, rest_1.param)(idPathParam)),
327
- __param(1, (0, rest_1.requestBody)({
328
- content: {
329
- 'application/json': {
330
- schema: schemaOptions?.replaceById ??
331
- (0, rest_1.getModelSchemaRef)(entityOptions, {
332
- title: `Fields of ${entityOptions.name}`,
333
- }),
334
- },
335
- },
336
- })),
337
- __metadata("design:type", Function),
338
- __metadata("design:paramtypes", [Object, Object]),
339
- __metadata("design:returntype", Promise)
340
- ], CrudController.prototype, "replaceById", null);
341
- __decorate([
342
- (0, rest_1.del)('/{id}', {
343
- responses: {
344
- '200': {
345
- description: `${entityOptions.name} was deleted`,
346
- content: {
347
- 'application/json': {
348
- schema: schemaOptions?.deleteById ??
349
- (0, rest_1.getModelSchemaRef)(entityOptions, {
350
- partial: true,
351
- title: `Deleted ${entityOptions.name} models`,
352
- }),
353
- },
354
- },
355
- },
356
- },
357
- }),
358
- __param(0, (0, rest_1.param)(idPathParam)),
359
- __metadata("design:type", Function),
360
- __metadata("design:paramtypes", [Object]),
361
- __metadata("design:returntype", Promise)
362
- ], CrudController.prototype, "deleteById", null);
363
51
  if (repositoryOptions?.name) {
364
- (0, core_1.inject)(`repositories.${repositoryOptions.name}`)(CrudController, undefined, 0);
52
+ (0, core_1.inject)(common_1.BindingKeys.repositoryFor(repositoryOptions.name))(CrudController, undefined, 0);
365
53
  }
366
54
  if (doInjectCurrentUser) {
367
55
  core_1.inject.getter(security_1.SecurityBindings.USER, { optional: true })(CrudController, undefined, 1);