@decaf-ts/for-nest 0.1.2 → 0.1.3
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.
- package/README.md +6 -1
- package/dist/for-nest.cjs +1 -1
- package/dist/for-nest.cjs.map +1 -1
- package/dist/for-nest.js +1 -1
- package/dist/for-nest.js.map +1 -1
- package/lib/RepoFactory.cjs +27 -0
- package/lib/RepoFactory.d.ts +6 -0
- package/lib/RepoFactory.js.map +1 -0
- package/lib/constants.cjs +1 -3
- package/lib/constants.d.ts +0 -2
- package/lib/constants.js.map +1 -1
- package/lib/decaf-model/DecafModelModule.cjs +3 -22
- package/lib/decaf-model/DecafModelModule.d.ts +2 -3
- package/lib/decaf-model/DecafModelModule.js.map +1 -1
- package/lib/decaf-model/FromModelController.cjs +16 -69
- package/lib/decaf-model/FromModelController.d.ts +0 -49
- package/lib/decaf-model/FromModelController.js.map +1 -1
- package/lib/decoration.cjs +5 -0
- package/lib/decoration.js.map +1 -1
- package/lib/esm/RepoFactory.d.ts +6 -0
- package/lib/esm/RepoFactory.js +24 -0
- package/lib/esm/RepoFactory.js.map +1 -0
- package/lib/esm/constants.d.ts +0 -2
- package/lib/esm/constants.js +0 -2
- package/lib/esm/constants.js.map +1 -1
- package/lib/esm/decaf-model/DecafModelModule.d.ts +2 -3
- package/lib/esm/decaf-model/DecafModelModule.js +3 -22
- package/lib/esm/decaf-model/DecafModelModule.js.map +1 -1
- package/lib/esm/decaf-model/FromModelController.d.ts +0 -49
- package/lib/esm/decaf-model/FromModelController.js +16 -69
- package/lib/esm/decaf-model/FromModelController.js.map +1 -1
- package/lib/esm/decoration.js +6 -1
- package/lib/esm/decoration.js.map +1 -1
- package/lib/esm/index.d.ts +2 -3
- package/lib/esm/index.js +2 -3
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/module.js +1 -1
- package/lib/esm/module.js.map +1 -1
- package/lib/esm/types.d.ts +0 -9
- package/lib/index.cjs +2 -3
- package/lib/index.d.ts +2 -3
- package/lib/index.js.map +1 -1
- package/lib/module.cjs +1 -1
- package/lib/module.js.map +1 -1
- package/lib/types.d.ts +0 -9
- package/package.json +1 -1
- package/lib/esm/interceptors/DecafRequestHandlerInterceptor.d.ts +0 -53
- package/lib/esm/interceptors/DecafRequestHandlerInterceptor.js +0 -73
- package/lib/esm/interceptors/DecafRequestHandlerInterceptor.js.map +0 -1
- package/lib/esm/interceptors/index.d.ts +0 -1
- package/lib/esm/interceptors/index.js +0 -2
- package/lib/esm/interceptors/index.js.map +0 -1
- package/lib/esm/request/DecafHandlerExecutor.d.ts +0 -52
- package/lib/esm/request/DecafHandlerExecutor.js +0 -77
- package/lib/esm/request/DecafHandlerExecutor.js.map +0 -1
- package/lib/esm/request/DecafRequestContext.d.ts +0 -26
- package/lib/esm/request/DecafRequestContext.js +0 -44
- package/lib/esm/request/DecafRequestContext.js.map +0 -1
- package/lib/esm/request/index.d.ts +0 -2
- package/lib/esm/request/index.js +0 -3
- package/lib/esm/request/index.js.map +0 -1
- package/lib/interceptors/DecafRequestHandlerInterceptor.cjs +0 -76
- package/lib/interceptors/DecafRequestHandlerInterceptor.d.ts +0 -53
- package/lib/interceptors/DecafRequestHandlerInterceptor.js.map +0 -1
- package/lib/interceptors/index.cjs +0 -18
- package/lib/interceptors/index.d.ts +0 -1
- package/lib/interceptors/index.js.map +0 -1
- package/lib/request/DecafHandlerExecutor.cjs +0 -80
- package/lib/request/DecafHandlerExecutor.d.ts +0 -52
- package/lib/request/DecafHandlerExecutor.js.map +0 -1
- package/lib/request/DecafRequestContext.cjs +0 -47
- package/lib/request/DecafRequestContext.d.ts +0 -26
- package/lib/request/DecafRequestContext.js.map +0 -1
- package/lib/request/index.cjs +0 -19
- package/lib/request/index.d.ts +0 -2
- package/lib/request/index.js.map +0 -1
|
@@ -15,63 +15,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
15
15
|
exports.FromModelController = void 0;
|
|
16
16
|
const common_1 = require("@nestjs/common");
|
|
17
17
|
const swagger_1 = require("@nestjs/swagger");
|
|
18
|
-
const core_1 = require("@decaf-ts/core");
|
|
19
18
|
const decorator_validation_1 = require("@decaf-ts/decorator-validation");
|
|
20
19
|
const logging_1 = require("@decaf-ts/logging");
|
|
21
20
|
const db_decorators_1 = require("@decaf-ts/db-decorators");
|
|
22
21
|
const decoration_1 = require("@decaf-ts/decoration");
|
|
23
22
|
const decorators_1 = require("./decorators/index.cjs");
|
|
24
|
-
const
|
|
25
|
-
const constants_1 = require("./../constants.cjs");
|
|
26
|
-
/**
|
|
27
|
-
* @description
|
|
28
|
-
* Factory and utilities for generating dynamic NestJS controllers from Decaf {@link Model} definitions.
|
|
29
|
-
*
|
|
30
|
-
* @summary
|
|
31
|
-
* The `FromModelController` class provides the infrastructure necessary to automatically generate
|
|
32
|
-
* strongly-typed CRUD controllers based on a given {@link ModelConstructor}. It inspects metadata from
|
|
33
|
-
* the model, derives route paths, parameters, and generates a dynamic controller class at runtime with
|
|
34
|
-
* full support for querying, creation, update, and deletion of model entities through a {@link Repo}.
|
|
35
|
-
*
|
|
36
|
-
* @template T The {@link Model} type associated with the generated controller.
|
|
37
|
-
*
|
|
38
|
-
* @param ModelClazz The model class to generate the controller from.
|
|
39
|
-
*
|
|
40
|
-
* @class FromModelController
|
|
41
|
-
*
|
|
42
|
-
* @example
|
|
43
|
-
* ```ts
|
|
44
|
-
* // Given a Decaf Model:
|
|
45
|
-
* class User extends Model<User> {
|
|
46
|
-
* id!: string;
|
|
47
|
-
* name!: string;
|
|
48
|
-
* }
|
|
49
|
-
*
|
|
50
|
-
* // Register controller:
|
|
51
|
-
* const UserController = FromModelController.create(User);
|
|
52
|
-
*
|
|
53
|
-
* // NestJS will expose:
|
|
54
|
-
* // POST /user
|
|
55
|
-
* // GET /user/:id
|
|
56
|
-
* // GET /user/query/:method
|
|
57
|
-
* // PUT /user/:id
|
|
58
|
-
* // DELETE /user/:id
|
|
59
|
-
* ```
|
|
60
|
-
*
|
|
61
|
-
* @mermaid
|
|
62
|
-
* sequenceDiagram
|
|
63
|
-
* participant Client
|
|
64
|
-
* participant Controller
|
|
65
|
-
* participant Repo
|
|
66
|
-
* participant DB
|
|
67
|
-
*
|
|
68
|
-
* Client->>Controller: HTTP Request
|
|
69
|
-
* Controller->>Repo: Resolve repository for Model
|
|
70
|
-
* Repo->>DB: Execute DB operation
|
|
71
|
-
* DB-->>Repo: DB Result
|
|
72
|
-
* Repo-->>Controller: Model Instance(s)
|
|
73
|
-
* Controller-->>Client: JSON Response
|
|
74
|
-
*/
|
|
23
|
+
const RepoFactory_1 = require("./../RepoFactory.cjs");
|
|
75
24
|
class FromModelController {
|
|
76
25
|
static { this.log = logging_1.Logging.for(FromModelController.name); }
|
|
77
26
|
static create(ModelClazz) {
|
|
@@ -83,26 +32,24 @@ class FromModelController {
|
|
|
83
32
|
const { description, apiProperties, path } = FromModelController.getRouteParametersFromModel(ModelClazz);
|
|
84
33
|
log.debug(`Creating controller for model: ${modelClazzName}`);
|
|
85
34
|
let DynamicModelController = class DynamicModelController extends logging_1.LoggedClass {
|
|
86
|
-
constructor(
|
|
35
|
+
constructor(repoFactory) {
|
|
87
36
|
super();
|
|
88
|
-
this.
|
|
89
|
-
this.pk = decorator_validation_1.Model.pk(ModelClazz);
|
|
37
|
+
this.repoFactory = repoFactory;
|
|
90
38
|
log.info(`Registering dynamic controller for model: ${modelClazzName} route: /${routePath}`);
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
return this._repo;
|
|
39
|
+
try {
|
|
40
|
+
this.repo = this.repoFactory.for(ModelClazz.name);
|
|
41
|
+
this.pk = decorator_validation_1.Model.pk(ModelClazz);
|
|
42
|
+
}
|
|
43
|
+
catch (e) {
|
|
44
|
+
this.log.error(`Failed to initialize repository for model "${ModelClazz.name}".`, e);
|
|
45
|
+
}
|
|
99
46
|
}
|
|
100
47
|
async create(data) {
|
|
101
48
|
const log = this.log.for(this.create);
|
|
102
49
|
log.verbose(`creating new ${modelClazzName}`);
|
|
103
50
|
let created;
|
|
104
51
|
try {
|
|
105
|
-
created = await this.
|
|
52
|
+
created = await this.repo.create(data);
|
|
106
53
|
}
|
|
107
54
|
catch (e) {
|
|
108
55
|
log.error(`Failed to create new ${modelClazzName}`, e);
|
|
@@ -117,7 +64,7 @@ class FromModelController {
|
|
|
117
64
|
let read;
|
|
118
65
|
try {
|
|
119
66
|
log.debug(`reading ${modelClazzName} with ${this.pk} ${id}`);
|
|
120
|
-
read = await this.
|
|
67
|
+
read = await this.repo.read(id);
|
|
121
68
|
}
|
|
122
69
|
catch (e) {
|
|
123
70
|
log.error(`Failed to read ${modelClazzName} with id ${id}`, e);
|
|
@@ -131,7 +78,7 @@ class FromModelController {
|
|
|
131
78
|
let results;
|
|
132
79
|
try {
|
|
133
80
|
log.debug(`Querying ${modelClazzName} using method "${method}"`);
|
|
134
|
-
results = await this.
|
|
81
|
+
results = await this.repo[method]();
|
|
135
82
|
}
|
|
136
83
|
catch (e) {
|
|
137
84
|
log.error(`Failed to query ${modelClazzName} using method "${method}"`, e);
|
|
@@ -145,7 +92,7 @@ class FromModelController {
|
|
|
145
92
|
let updated;
|
|
146
93
|
try {
|
|
147
94
|
log.info(`updating ${modelClazzName} with ${this.pk} ${body[this.pk]}`);
|
|
148
|
-
updated = await this.
|
|
95
|
+
updated = await this.repo.create(body);
|
|
149
96
|
}
|
|
150
97
|
catch (e) {
|
|
151
98
|
log.error(e);
|
|
@@ -158,7 +105,7 @@ class FromModelController {
|
|
|
158
105
|
let read;
|
|
159
106
|
try {
|
|
160
107
|
log.debug(`deleting ${modelClazzName} with ${this.pk} ${routeParams}`);
|
|
161
|
-
read = await this.
|
|
108
|
+
read = await this.repo.read("id");
|
|
162
109
|
}
|
|
163
110
|
catch (e) {
|
|
164
111
|
log.error(`Failed to delete ${modelClazzName} with id ${"id"}`, e);
|
|
@@ -259,7 +206,7 @@ class FromModelController {
|
|
|
259
206
|
(0, common_1.Controller)(routePath),
|
|
260
207
|
(0, swagger_1.ApiTags)(modelClazzName),
|
|
261
208
|
(0, swagger_1.ApiExtraModels)(ModelClazz),
|
|
262
|
-
__metadata("design:paramtypes", [
|
|
209
|
+
__metadata("design:paramtypes", [RepoFactory_1.RepoFactory])
|
|
263
210
|
], DynamicModelController);
|
|
264
211
|
return DynamicModelController;
|
|
265
212
|
}
|
|
@@ -1,53 +1,4 @@
|
|
|
1
1
|
import { Model, ModelConstructor } from "@decaf-ts/decorator-validation";
|
|
2
|
-
/**
|
|
3
|
-
* @description
|
|
4
|
-
* Factory and utilities for generating dynamic NestJS controllers from Decaf {@link Model} definitions.
|
|
5
|
-
*
|
|
6
|
-
* @summary
|
|
7
|
-
* The `FromModelController` class provides the infrastructure necessary to automatically generate
|
|
8
|
-
* strongly-typed CRUD controllers based on a given {@link ModelConstructor}. It inspects metadata from
|
|
9
|
-
* the model, derives route paths, parameters, and generates a dynamic controller class at runtime with
|
|
10
|
-
* full support for querying, creation, update, and deletion of model entities through a {@link Repo}.
|
|
11
|
-
*
|
|
12
|
-
* @template T The {@link Model} type associated with the generated controller.
|
|
13
|
-
*
|
|
14
|
-
* @param ModelClazz The model class to generate the controller from.
|
|
15
|
-
*
|
|
16
|
-
* @class FromModelController
|
|
17
|
-
*
|
|
18
|
-
* @example
|
|
19
|
-
* ```ts
|
|
20
|
-
* // Given a Decaf Model:
|
|
21
|
-
* class User extends Model<User> {
|
|
22
|
-
* id!: string;
|
|
23
|
-
* name!: string;
|
|
24
|
-
* }
|
|
25
|
-
*
|
|
26
|
-
* // Register controller:
|
|
27
|
-
* const UserController = FromModelController.create(User);
|
|
28
|
-
*
|
|
29
|
-
* // NestJS will expose:
|
|
30
|
-
* // POST /user
|
|
31
|
-
* // GET /user/:id
|
|
32
|
-
* // GET /user/query/:method
|
|
33
|
-
* // PUT /user/:id
|
|
34
|
-
* // DELETE /user/:id
|
|
35
|
-
* ```
|
|
36
|
-
*
|
|
37
|
-
* @mermaid
|
|
38
|
-
* sequenceDiagram
|
|
39
|
-
* participant Client
|
|
40
|
-
* participant Controller
|
|
41
|
-
* participant Repo
|
|
42
|
-
* participant DB
|
|
43
|
-
*
|
|
44
|
-
* Client->>Controller: HTTP Request
|
|
45
|
-
* Controller->>Repo: Resolve repository for Model
|
|
46
|
-
* Repo->>DB: Execute DB operation
|
|
47
|
-
* DB-->>Repo: DB Result
|
|
48
|
-
* Repo-->>Controller: Model Instance(s)
|
|
49
|
-
* Controller-->>Client: JSON Response
|
|
50
|
-
*/
|
|
51
2
|
export declare class FromModelController {
|
|
52
3
|
private static readonly log;
|
|
53
4
|
static create<T extends Model<any>>(ModelClazz: ModelConstructor<T>): any;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FromModelController.js","sourceRoot":"","sources":["../../src/decaf-model/FromModelController.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAyD;AACzD,6CAYyB;
|
|
1
|
+
{"version":3,"file":"FromModelController.js","sourceRoot":"","sources":["../../src/decaf-model/FromModelController.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAyD;AACzD,6CAYyB;AAEzB,yEAAyE;AACzE,+CAAsE;AACtE,2DAAiD;AACjD,qDAAgD;AAChD,uDAKsB;AACtB,sDAA6C;AAE7C,MAAa,mBAAmB;aACN,QAAG,GAAG,iBAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAE7D,AAAP,MAAM,CAAC,MAAM,CAAuB,UAA+B;QACjE,MAAM,GAAG,GAAG,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;QACpE,MAAM,SAAS,GAAG,4BAAK,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC9C,MAAM,SAAS,GAAG,IAAA,qBAAW,EAAC,SAAS,CAAC,CAAC;QACzC,MAAM,cAAc,GAAG,UAAU,CAAC,IAAI,CAAC;QACvC,6DAA6D;QAC7D,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,IAAI,EAAE,GACxC,mBAAmB,CAAC,2BAA2B,CAAC,UAAU,CAAC,CAAC;QAE9D,GAAG,CAAC,KAAK,CAAC,kCAAkC,cAAc,EAAE,CAAC,CAAC;QAE9D,IAGM,sBAAsB,GAH5B,MAGM,sBAAuB,SAAQ,qBAAW;YAK9C,YAA4B,WAAwB;gBAClD,KAAK,EAAE,CAAC;gBADkB,gBAAW,GAAX,WAAW,CAAa;gBAElD,GAAG,CAAC,IAAI,CACN,6CAA6C,cAAc,YAAY,SAAS,EAAE,CACnF,CAAC;gBAEF,IAAI,CAAC;oBACH,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;oBAClD,IAAI,CAAC,EAAE,GAAG,4BAAK,CAAC,EAAE,CAAC,UAAU,CAAW,CAAC;gBAC3C,CAAC;gBAAC,OAAO,CAAM,EAAE,CAAC;oBAChB,IAAI,CAAC,GAAG,CAAC,KAAK,CACZ,8CAA8C,UAAU,CAAC,IAAI,IAAI,EACjE,CAAC,CACF,CAAC;gBACJ,CAAC;YACH,CAAC;YAeK,AAAN,KAAK,CAAC,MAAM,CAAS,IAAO;gBAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACtC,GAAG,CAAC,OAAO,CAAC,gBAAgB,cAAc,EAAE,CAAC,CAAC;gBAC9C,IAAI,OAAc,CAAC;gBACnB,IAAI,CAAC;oBACH,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBACzC,CAAC;gBAAC,OAAO,CAAU,EAAE,CAAC;oBACpB,GAAG,CAAC,KAAK,CAAC,wBAAwB,cAAc,EAAE,EAAE,CAAU,CAAC,CAAC;oBAChE,MAAM,CAAC,CAAC;gBACV,CAAC;gBACD,GAAG,CAAC,IAAI,CACN,eAAe,cAAc,YAAa,OAAe,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CACrE,CAAC;gBACF,OAAO,OAAO,CAAC;YACjB,CAAC;YAWK,AAAN,KAAK,CAAC,IAAI,CAAU,UAAe;gBACjC,MAAM,EAAE,EAAE,EAAE,GAAG,UAAU,CAAC;gBAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACpC,IAAI,IAAW,CAAC;gBAChB,IAAI,CAAC;oBACH,GAAG,CAAC,KAAK,CAAC,WAAW,cAAc,SAAS,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;oBAC7D,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAClC,CAAC;gBAAC,OAAO,CAAU,EAAE,CAAC;oBACpB,GAAG,CAAC,KAAK,CACP,kBAAkB,cAAc,YAAY,EAAE,EAAE,EAChD,CAAU,CACX,CAAC;oBACF,MAAM,CAAC,CAAC;gBACV,CAAC;gBAED,GAAG,CAAC,IAAI,CAAC,QAAQ,cAAc,YAAa,IAAY,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBACrE,OAAO,IAAI,CAAC;YACd,CAAC;YAWK,AAAN,KAAK,CAAC,KAAK,CAAkB,MAAc;gBACzC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACpC,IAAI,OAAwB,CAAC;gBAE7B,IAAI,CAAC;oBACH,GAAG,CAAC,KAAK,CAAC,YAAY,cAAc,kBAAkB,MAAM,GAAG,CAAC,CAAC;oBACjE,OAAO,GAAG,MAAO,IAAI,CAAC,IAAY,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC/C,CAAC;gBAAC,OAAO,CAAU,EAAE,CAAC;oBACpB,GAAG,CAAC,KAAK,CACP,mBAAmB,cAAc,kBAAkB,MAAM,GAAG,EAC5D,CAAU,CACX,CAAC;oBACF,MAAM,CAAC,CAAC;gBACV,CAAC;gBAED,GAAG,CAAC,IAAI,CACN,wBAAwB,cAAc,kBAAkB,MAAM,GAAG,CAClE,CAAC;gBACF,OAAO,OAAO,CAAC;YACjB,CAAC;YAkBK,AAAN,KAAK,CAAC,MAAM,CACkB,WAA4B,EAChD,IAAgB;gBAExB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACtC,IAAI,OAAc,CAAC;gBACnB,IAAI,CAAC;oBACH,GAAG,CAAC,IAAI,CACN,YAAY,cAAc,SAAS,IAAI,CAAC,EAAE,IAAK,IAAY,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CACvE,CAAC;oBACF,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAW,CAAC,CAAC;gBAChD,CAAC;gBAAC,OAAO,CAAU,EAAE,CAAC;oBACpB,GAAG,CAAC,KAAK,CAAC,CAAU,CAAC,CAAC;oBACtB,MAAM,CAAC,CAAC;gBACV,CAAC;gBACD,OAAO,OAAO,CAAC;YACjB,CAAC;YAWK,AAAN,KAAK,CAAC,MAAM,CAA6B,WAA4B;gBACnE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACtC,IAAI,IAAW,CAAC;gBAChB,IAAI,CAAC;oBACH,GAAG,CAAC,KAAK,CACP,YAAY,cAAc,SAAS,IAAI,CAAC,EAAY,IAAI,WAAW,EAAE,CACtE,CAAC;oBACF,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACpC,CAAC;gBAAC,OAAO,CAAU,EAAE,CAAC;oBACpB,GAAG,CAAC,KAAK,CACP,oBAAoB,cAAc,YAAY,IAAI,EAAE,EACpD,CAAU,CACX,CAAC;oBACF,MAAM,CAAC,CAAC;gBACV,CAAC;gBACD,GAAG,CAAC,IAAI,CAAC,WAAW,cAAc,YAAa,IAAY,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBACxE,OAAO,IAAI,CAAC;YACd,CAAC;SACF,CAAA;QAvIO;YAbL,IAAA,kCAAqB,EAAC,UAAU,EAAE,MAAM,CAAC;YACzC,IAAA,sBAAY,EAAC,EAAE,OAAO,EAAE,gBAAgB,cAAc,GAAG,EAAE,CAAC;YAC5D,IAAA,iBAAO,EAAC;gBACP,WAAW,EAAE,eAAe,cAAc,EAAE;gBAC5C,MAAM,EAAE,EAAE,IAAI,EAAE,IAAA,uBAAa,EAAC,UAAU,CAAC,EAAE;aAC5C,CAAC;YACD,IAAA,4BAAkB,EAAC;gBAClB,WAAW,EAAE,GAAG,cAAc,wBAAwB;aACvD,CAAC;YACD,IAAA,+BAAqB,EAAC,EAAE,WAAW,EAAE,4BAA4B,EAAE,CAAC;YACpE,IAAA,wCAA8B,EAAC;gBAC9B,WAAW,EAAE,2CAA2C;aACzD,CAAC;YACY,WAAA,IAAA,aAAI,GAAE,CAAA;;;;4DAcnB;QAWK;YATL,IAAA,kCAAqB,EAAC,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC;YAC9C,IAAA,+BAAkB,EAAC,aAAa,CAAC;YACjC,IAAA,sBAAY,EAAC,EAAE,OAAO,EAAE,cAAc,cAAc,gBAAgB,EAAE,CAAC;YACvE,IAAA,uBAAa,EAAC;gBACb,WAAW,EAAE,GAAG,cAAc,0BAA0B;aACzD,CAAC;YACD,IAAA,6BAAmB,EAAC;gBACnB,WAAW,EAAE,MAAM,cAAc,0CAA0C;aAC5E,CAAC;YACU,WAAA,IAAA,cAAK,GAAE,CAAA;;;;0DAiBlB;QAWK;YATL,IAAA,kCAAqB,EAAC,UAAU,EAAE,KAAK,EAAE,eAAe,CAAC;YACzD,IAAA,sBAAY,EAAC,EAAE,OAAO,EAAE,YAAY,cAAc,oBAAoB,EAAE,CAAC;YACzE,IAAA,kBAAQ,EAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,2BAA2B,EAAE,CAAC;YACtE,IAAA,uBAAa,EAAC;gBACb,WAAW,EAAE,GAAG,cAAc,0BAA0B;aACzD,CAAC;YACD,IAAA,6BAAmB,EAAC;gBACnB,WAAW,EAAE,MAAM,cAAc,6BAA6B;aAC/D,CAAC;YACW,WAAA,IAAA,cAAK,EAAC,QAAQ,CAAC,CAAA;;;;2DAmB3B;QAkBK;YAhBL,IAAA,kCAAqB,EAAC,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC;YAC9C,IAAA,+BAAkB,EAAC,aAAa,CAAC;YACjC,IAAA,sBAAY,EAAC;gBACZ,OAAO,EAAE,uBAAuB,cAAc,6BAA6B;aAC5E,CAAC;YACD,IAAA,iBAAO,EAAC;gBACP,WAAW,EAAE,4CAA4C,cAAc,EAAE;gBACzE,MAAM,EAAE,EAAE,IAAI,EAAE,IAAA,uBAAa,EAAC,UAAU,CAAC,EAAE;aAC5C,CAAC;YACD,IAAA,uBAAa,EAAC;gBACb,WAAW,EAAE,GAAG,UAAU,gCAAgC;aAC3D,CAAC;YACD,IAAA,6BAAmB,EAAC;gBACnB,WAAW,EAAE,MAAM,cAAc,0CAA0C;aAC5E,CAAC;YACD,IAAA,+BAAqB,EAAC,EAAE,WAAW,EAAE,4BAA4B,EAAE,CAAC;YAElE,WAAA,IAAA,wBAAW,EAAC,aAAa,CAAC,CAAA;YAC1B,WAAA,IAAA,aAAI,GAAE,CAAA;;qDAAO,4BAAK;;4DAcpB;QAWK;YATL,IAAA,kCAAqB,EAAC,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC;YACjD,IAAA,+BAAkB,EAAC,aAAa,CAAC;YACjC,IAAA,sBAAY,EAAC,EAAE,OAAO,EAAE,YAAY,cAAc,gBAAgB,EAAE,CAAC;YACrE,IAAA,uBAAa,EAAC;gBACb,WAAW,EAAE,GAAG,cAAc,+BAA+B;aAC9D,CAAC;YACD,IAAA,6BAAmB,EAAC;gBACnB,WAAW,EAAE,MAAM,cAAc,0CAA0C;aAC5E,CAAC;YACY,WAAA,IAAA,wBAAW,EAAC,aAAa,CAAC,CAAA;;;;4DAiBvC;QAzKG,sBAAsB;YAH3B,IAAA,mBAAU,EAAC,SAAS,CAAC;YACrB,IAAA,iBAAO,EAAC,cAAc,CAAC;YACvB,IAAA,wBAAc,EAAC,UAAU,CAAC;6CAMgB,yBAAW;WALhD,sBAAsB,CA0K3B;QAED,OAAO,sBAA6B,CAAC;IACvC,CAAC;IAED,MAAM,CAAC,2BAA2B,CAChC,UAA+B;QAE/B,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;QACpC,MAAM,EAAE,GAAG,4BAAK,CAAC,EAAE,CAAC,UAAU,CAAqB,CAAC;QACpD,MAAM,kBAAkB,GAAG,sBAAM,CAAC,QAAQ,CAAC;QAC3C,MAAM,YAAY,GAChB,OAAO,CAAC,WAAW,CAAC,kBAAkB,EAAE,QAAQ,EAAE,EAAY,CAAC,EAAE,IAAI;YACrE,EAAE,CAAC;QAEL,MAAM,YAAY,GAChB,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC;YACpD,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC;YACnB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAEX,MAAM,WAAW,GAAG,qBAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAErD,2CAA2C;QAC3C,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC;QAErD,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1D,MAAM,aAAa,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YAC3C,OAAO;gBACL,IAAI,EAAE,GAAG;gBACT,WAAW,EAAE,qBAAQ,CAAC,WAAW,CAAC,UAAU,EAAE,GAAG,CAAC;gBAClD,QAAQ,EAAE,IAAI;gBACd,IAAI,EAAE,MAAM;aACb,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;IAC9C,CAAC;;AA9NH,kDA+NC"}
|
package/lib/decoration.cjs
CHANGED
|
@@ -9,6 +9,11 @@ const swagger_1 = require("@nestjs/swagger");
|
|
|
9
9
|
decoration_1.Decoration.for(injectable_decorators_1.InjectablesKeys.INJECTABLE)
|
|
10
10
|
.extend({
|
|
11
11
|
decorator: function nestInjectable(category, cfg) {
|
|
12
|
+
cfg =
|
|
13
|
+
cfg ||
|
|
14
|
+
(typeof category === "object"
|
|
15
|
+
? Object.assign(category, injectable_decorators_1.DefaultInjectablesConfig)
|
|
16
|
+
: injectable_decorators_1.DefaultInjectablesConfig);
|
|
12
17
|
return (0, common_1.Injectable)({
|
|
13
18
|
scope: cfg.singleton ? common_1.Scope.DEFAULT : common_1.Scope.REQUEST,
|
|
14
19
|
durable: cfg.singleton ? undefined : true,
|
package/lib/decoration.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decoration.js","sourceRoot":"","sources":["../src/decoration.ts"],"names":[],"mappings":";;AAAA,
|
|
1
|
+
{"version":3,"file":"decoration.js","sourceRoot":"","sources":["../src/decoration.ts"],"names":[],"mappings":";;AAAA,2EAKyC;AACzC,2CAA2D;AAC3D,qDAA+E;AAC/E,yEAAgE;AAChE,yCAAiD;AACjD,6CAA8C;AAE9C,uBAAU,CAAC,GAAG,CAAC,uCAAe,CAAC,UAAU,CAAC;KACvC,MAAM,CAAC;IACN,SAAS,EAAE,SAAS,cAAc,CAChC,QAA8B,EAC9B,GAAsB;QAEtB,GAAG;YACD,GAAG;gBACH,CAAC,OAAO,QAAQ,KAAK,QAAQ;oBAC3B,CAAC,CAAC,MAAM,CAAC,MAAM,CACX,QAA4B,EAC5B,gDAAwB,CACzB;oBACH,CAAC,CAAC,gDAAwB,CAAC,CAAC;QAChC,OAAO,IAAA,mBAAU,EAAC;YAChB,KAAK,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,cAAK,CAAC,OAAO,CAAC,CAAC,CAAC,cAAK,CAAC,OAAO;YACpD,OAAO,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI;SAC1C,CAAC,CAAC;IACL,CAAC;CACF,CAAC;KACD,KAAK,EAAE,CAAC;AAEX,uBAAU,CAAC,GAAG,CAAC,uCAAe,CAAC,MAAM,CAAC;KACnC,MAAM,CAAC;IACN,SAAS,EAAE,SAAS,UAAU,CAC5B,QAAuC;IACvC,6DAA6D;IAC7D,GAAkB;QAElB,OAAO,SAAS,eAAe,CAC7B,MAAc,EACd,WAAiB,EACjB,UAAgB;YAEhB,OAAO,IAAA,eAAM,EAAC,QAAQ,IAAK,MAAsB,CAAC,CAChD,MAAM,EACN,WAAW,EACX,UAAU,CACX,CAAC;QACJ,CAAC,CAAC;IACJ,CAAC;CACF,CAAC;KACD,KAAK,EAAE,CAAC;AAEX,uBAAU,CAAC,GAAG,CAAC,qCAAc,CAAC,QAAQ,CAAC;KACpC,MAAM,CACL,IAAA,qBAAW,EAAC;IACV,QAAQ,EAAE,IAAI;CACf,CAAC,CACH;KACA,KAAK,EAAE,CAAC;AAEX,uBAAU,CAAC,GAAG,CAAC,qCAAc,CAAC,GAAG,CAAC;KAC/B,MAAM,CAAC;IACN,SAAS,EAAE,SAAS,MAAM,CAAC,GAAW;QACpC,OAAO,IAAA,qBAAW,EAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;IACvC,CAAC;CACF,CAAC;KACD,KAAK,EAAE,CAAC;AAEX,uBAAU,CAAC,GAAG,CAAC,qCAAc,CAAC,GAAG,CAAC;KAC/B,MAAM,CAAC;IACN,SAAS,EAAE,SAAS,MAAM,CAAC,GAAW;QACpC,OAAO,IAAA,qBAAW,EAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;IACvC,CAAC;CACF,CAAC;KACD,KAAK,EAAE,CAAC;AAEX,uBAAU,CAAC,GAAG,CAAC,qCAAc,CAAC,UAAU,CAAC;KACtC,MAAM,CAAC;IACN,SAAS,EAAE,SAAS,YAAY,CAAC,GAAW;QAC1C,OAAO,IAAA,qBAAW,EAAC,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;IACzC,CAAC;CACF,CAAC;KACD,KAAK,EAAE,CAAC;AAEX,uBAAU,CAAC,GAAG,CAAC,qCAAc,CAAC,UAAU,CAAC;KACtC,MAAM,CAAC;IACN,SAAS,EAAE,SAAS,YAAY,CAAC,GAAW;QAC1C,OAAO,IAAA,qBAAW,EAAC,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;IACzC,CAAC;CACF,CAAC;KACD,KAAK,EAAE,CAAC;AACX,EAAE;AACF,sCAAsC;AACtC,cAAc;AACd,iGAAiG;AACjG,mDAAmD;AACnD,SAAS;AACT,OAAO;AACP,cAAc;AACd,EAAE;AACF,sCAAsC;AACtC,cAAc;AACd,sCAAsC;AACtC,4CAA4C;AAC5C,SAAS;AACT,OAAO;AACP,cAAc;AAEd,uBAAU,CAAC,GAAG,CAAC,qCAAc,CAAC,IAAI,CAAC;KAChC,MAAM,CAAC;IACN,SAAS,EAAE,SAAS,OAAO,CACzB,KAGmD;QAEnD,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAClD,OAAO,IAAA,qBAAW,EAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACpC,CAAC;CACF,CAAC;KACD,KAAK,EAAE,CAAC;AAEX,EAAE;AACF,wCAAwC;AACxC,cAAc;AACd,+EAA+E;AAC/E,gFAAgF;AAChF,4CAA4C;AAC5C,SAAS;AACT,OAAO;AACP,cAAc;AAEd,uBAAU,CAAC,GAAG,CAAC,qCAAc,CAAC,OAAO,CAAC;KACnC,MAAM,CAAC;IACN,SAAS,EAAE,SAAS,UAAU,CAAC,GAAoB;QACjD,OAAO,IAAA,qBAAW,EAAC;YACjB,OAAO,EAAE,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM;SACpD,CAAC,CAAC;IACL,CAAC;CACF,CAAC;KACD,KAAK,EAAE,CAAC;AAEX,uBAAU,CAAC,GAAG,CAAC,sBAAe,CAAC,MAAM,CAAC;KACnC,MAAM,CAAC;IACN,SAAS,EAAE,SAAS,SAAS,CAAC,IAAY;QACxC,OAAO,IAAA,qBAAW,EAAC;YACjB,IAAI,EAAE,IAAI;SACX,CAAC,CAAC;IACL,CAAC;CACF,CAAC;KACD,KAAK,EAAE,CAAC;AAEX,uBAAU,CAAC,GAAG,CAAC,2BAAc,CAAC,WAAW,CAAC;KACvC,MAAM,CAAC;IACN,SAAS,EAAE,SAAS,cAAc,CAAC,WAAmB;QACpD,OAAO,IAAA,qBAAW,EAAC;YACjB,WAAW,EAAE,WAAW;SACzB,CAAC,CAAC;IACL,CAAC;CACF,CAAC;KACD,KAAK,EAAE,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
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;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { Model } from "@decaf-ts/decorator-validation";
|
|
8
|
+
import { InternalError } from "@decaf-ts/db-decorators";
|
|
9
|
+
import { Repository } from "@decaf-ts/core";
|
|
10
|
+
import { Injectable } from "@nestjs/common";
|
|
11
|
+
let RepoFactory = class RepoFactory {
|
|
12
|
+
for(model) {
|
|
13
|
+
model = typeof model === "string" ? Model.get(model) : model;
|
|
14
|
+
if (!model) {
|
|
15
|
+
throw new InternalError(`Failed to find repository for ${model}`);
|
|
16
|
+
}
|
|
17
|
+
return Repository.forModel(model);
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
RepoFactory = __decorate([
|
|
21
|
+
Injectable()
|
|
22
|
+
], RepoFactory);
|
|
23
|
+
export { RepoFactory };
|
|
24
|
+
//# sourceMappingURL=RepoFactory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RepoFactory.js","sourceRoot":"","sources":["../../src/RepoFactory.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAQ,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAElD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAGrC,IAAM,WAAW,GAAjB,MAAM,WAAW;IACtB,GAAG,CAAkB,KAA8B;QACjD,KAAK,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAS,CAAC,CAAC,CAAC,KAAK,CAAC;QACtE,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,aAAa,CAAC,iCAAiC,KAAK,EAAE,CAAC,CAAC;QACpE,CAAC;QACD,OAAO,UAAU,CAAC,QAAQ,CAAC,KAAuB,CAAC,CAAC;IACtD,CAAC;CACF,CAAA;AARY,WAAW;IADvB,UAAU,EAAE;GACA,WAAW,CAQvB"}
|
package/lib/esm/constants.d.ts
CHANGED
package/lib/esm/constants.js
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
1
|
export const DECAF_MODULE_OPTIONS = "DecafModuleOptions";
|
|
2
2
|
export const DECAF_ADAPTER_ID = "DecafAdapter";
|
|
3
|
-
export const DECAF_HANDLERS = Symbol("DecafHandlers");
|
|
4
|
-
export const DECAF_ADAPTER_OPTIONS = Symbol("DecafAdapterForOptions");
|
|
5
3
|
//# sourceMappingURL=constants.js.map
|
package/lib/esm/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,oBAAoB,GAAG,oBAAoB,CAAC;AACzD,MAAM,CAAC,MAAM,gBAAgB,GAAG,cAAc,CAAC
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,oBAAoB,GAAG,oBAAoB,CAAC;AACzD,MAAM,CAAC,MAAM,gBAAgB,GAAG,cAAc,CAAC"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { DynamicModule
|
|
2
|
-
import { type DecafRequestHandler } from "../types";
|
|
1
|
+
import { DynamicModule } from "@nestjs/common";
|
|
3
2
|
export declare class DecafModelModule {
|
|
4
3
|
private static readonly log;
|
|
5
|
-
static forRoot(flavour: string
|
|
4
|
+
static forRoot(flavour: string): DynamicModule;
|
|
6
5
|
}
|
|
@@ -8,15 +8,12 @@ var DecafModelModule_1;
|
|
|
8
8
|
import { Module } from "@nestjs/common";
|
|
9
9
|
import { Adapter } from "@decaf-ts/core";
|
|
10
10
|
import { Logging } from "@decaf-ts/logging";
|
|
11
|
+
import { RepoFactory } from "./../RepoFactory.js";
|
|
11
12
|
import { FromModelController } from "./FromModelController.js";
|
|
12
|
-
import { DecafRequestHandlerInterceptor } from "./../interceptors/index.js";
|
|
13
|
-
import { APP_INTERCEPTOR } from "@nestjs/core";
|
|
14
|
-
import { DecafHandlerExecutor, DecafRequestContext } from "./../request/index.js";
|
|
15
|
-
import { DECAF_HANDLERS } from "./../constants.js";
|
|
16
13
|
let DecafModelModule = class DecafModelModule {
|
|
17
14
|
static { DecafModelModule_1 = this; }
|
|
18
15
|
static { this.log = Logging.for(DecafModelModule_1.name); }
|
|
19
|
-
static forRoot(flavour
|
|
16
|
+
static forRoot(flavour) {
|
|
20
17
|
const log = this.log.for(this.forRoot);
|
|
21
18
|
log.info(`Generating controllers for flavour...`);
|
|
22
19
|
const trackedModels = Adapter.models(flavour);
|
|
@@ -25,23 +22,7 @@ let DecafModelModule = class DecafModelModule {
|
|
|
25
22
|
return {
|
|
26
23
|
module: DecafModelModule_1,
|
|
27
24
|
controllers,
|
|
28
|
-
providers: [
|
|
29
|
-
{
|
|
30
|
-
provide: DECAF_HANDLERS,
|
|
31
|
-
useFactory: () => {
|
|
32
|
-
return handlers.map((H) => {
|
|
33
|
-
log.info(`Registered request handler: ${H.name}`);
|
|
34
|
-
return new H();
|
|
35
|
-
});
|
|
36
|
-
},
|
|
37
|
-
},
|
|
38
|
-
DecafRequestContext,
|
|
39
|
-
DecafHandlerExecutor,
|
|
40
|
-
{
|
|
41
|
-
provide: APP_INTERCEPTOR,
|
|
42
|
-
useClass: DecafRequestHandlerInterceptor,
|
|
43
|
-
},
|
|
44
|
-
],
|
|
25
|
+
providers: [RepoFactory],
|
|
45
26
|
};
|
|
46
27
|
}
|
|
47
28
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DecafModelModule.js","sourceRoot":"","sources":["../../../src/decaf-model/DecafModelModule.ts"],"names":[],"mappings":";;;;;;;AAAA,OAAO,EAAiB,MAAM,
|
|
1
|
+
{"version":3,"file":"DecafModelModule.js","sourceRoot":"","sources":["../../../src/decaf-model/DecafModelModule.ts"],"names":[],"mappings":";;;;;;;AAAA,OAAO,EAAiB,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,4BAAuB;AAC7C,OAAO,EAAE,mBAAmB,EAAE,iCAA8B;AAGrD,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;;aACH,QAAG,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAgB,CAAC,IAAI,CAAC,AAArC,CAAsC;IAEjE,MAAM,CAAC,OAAO,CAAC,OAAe;QAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvC,GAAG,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;QAElD,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC9C,MAAM,WAAW,GAAG,aAAa,CAAC,GAAG,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;QAElE,GAAG,CAAC,IAAI,CAAC,aAAa,WAAW,CAAC,MAAM,cAAc,CAAC,CAAC;QAExD,OAAO;YACL,MAAM,EAAE,kBAAgB;YACxB,WAAW;YACX,SAAS,EAAE,CAAC,WAAW,CAAC;SACzB,CAAC;IACJ,CAAC;;AAjBU,gBAAgB;IAD5B,MAAM,CAAC,EAAE,CAAC;GACE,gBAAgB,CAkB5B"}
|
|
@@ -1,53 +1,4 @@
|
|
|
1
1
|
import { Model, ModelConstructor } from "@decaf-ts/decorator-validation";
|
|
2
|
-
/**
|
|
3
|
-
* @description
|
|
4
|
-
* Factory and utilities for generating dynamic NestJS controllers from Decaf {@link Model} definitions.
|
|
5
|
-
*
|
|
6
|
-
* @summary
|
|
7
|
-
* The `FromModelController` class provides the infrastructure necessary to automatically generate
|
|
8
|
-
* strongly-typed CRUD controllers based on a given {@link ModelConstructor}. It inspects metadata from
|
|
9
|
-
* the model, derives route paths, parameters, and generates a dynamic controller class at runtime with
|
|
10
|
-
* full support for querying, creation, update, and deletion of model entities through a {@link Repo}.
|
|
11
|
-
*
|
|
12
|
-
* @template T The {@link Model} type associated with the generated controller.
|
|
13
|
-
*
|
|
14
|
-
* @param ModelClazz The model class to generate the controller from.
|
|
15
|
-
*
|
|
16
|
-
* @class FromModelController
|
|
17
|
-
*
|
|
18
|
-
* @example
|
|
19
|
-
* ```ts
|
|
20
|
-
* // Given a Decaf Model:
|
|
21
|
-
* class User extends Model<User> {
|
|
22
|
-
* id!: string;
|
|
23
|
-
* name!: string;
|
|
24
|
-
* }
|
|
25
|
-
*
|
|
26
|
-
* // Register controller:
|
|
27
|
-
* const UserController = FromModelController.create(User);
|
|
28
|
-
*
|
|
29
|
-
* // NestJS will expose:
|
|
30
|
-
* // POST /user
|
|
31
|
-
* // GET /user/:id
|
|
32
|
-
* // GET /user/query/:method
|
|
33
|
-
* // PUT /user/:id
|
|
34
|
-
* // DELETE /user/:id
|
|
35
|
-
* ```
|
|
36
|
-
*
|
|
37
|
-
* @mermaid
|
|
38
|
-
* sequenceDiagram
|
|
39
|
-
* participant Client
|
|
40
|
-
* participant Controller
|
|
41
|
-
* participant Repo
|
|
42
|
-
* participant DB
|
|
43
|
-
*
|
|
44
|
-
* Client->>Controller: HTTP Request
|
|
45
|
-
* Controller->>Repo: Resolve repository for Model
|
|
46
|
-
* Repo->>DB: Execute DB operation
|
|
47
|
-
* DB-->>Repo: DB Result
|
|
48
|
-
* Repo-->>Controller: Model Instance(s)
|
|
49
|
-
* Controller-->>Client: JSON Response
|
|
50
|
-
*/
|
|
51
2
|
export declare class FromModelController {
|
|
52
3
|
private static readonly log;
|
|
53
4
|
static create<T extends Model<any>>(ModelClazz: ModelConstructor<T>): any;
|
|
@@ -12,63 +12,12 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
|
12
12
|
};
|
|
13
13
|
import { Body, Controller, Param } from "@nestjs/common";
|
|
14
14
|
import { ApiBadRequestResponse, ApiBody, ApiCreatedResponse, ApiExtraModels, ApiNotFoundResponse, ApiOkResponse, ApiOperation, ApiParam, ApiTags, ApiUnprocessableEntityResponse, getSchemaPath, } from "@nestjs/swagger";
|
|
15
|
-
import { Repository } from "@decaf-ts/core";
|
|
16
15
|
import { Model } from "@decaf-ts/decorator-validation";
|
|
17
16
|
import { LoggedClass, Logging, toKebabCase } from "@decaf-ts/logging";
|
|
18
17
|
import { DBKeys } from "@decaf-ts/db-decorators";
|
|
19
18
|
import { Metadata } from "@decaf-ts/decoration";
|
|
20
19
|
import { ApiOperationFromModel, ApiParamsFromModel, DecafParams, } from "./decorators/index.js";
|
|
21
|
-
import {
|
|
22
|
-
import { DECAF_ADAPTER_OPTIONS } from "./../constants.js";
|
|
23
|
-
/**
|
|
24
|
-
* @description
|
|
25
|
-
* Factory and utilities for generating dynamic NestJS controllers from Decaf {@link Model} definitions.
|
|
26
|
-
*
|
|
27
|
-
* @summary
|
|
28
|
-
* The `FromModelController` class provides the infrastructure necessary to automatically generate
|
|
29
|
-
* strongly-typed CRUD controllers based on a given {@link ModelConstructor}. It inspects metadata from
|
|
30
|
-
* the model, derives route paths, parameters, and generates a dynamic controller class at runtime with
|
|
31
|
-
* full support for querying, creation, update, and deletion of model entities through a {@link Repo}.
|
|
32
|
-
*
|
|
33
|
-
* @template T The {@link Model} type associated with the generated controller.
|
|
34
|
-
*
|
|
35
|
-
* @param ModelClazz The model class to generate the controller from.
|
|
36
|
-
*
|
|
37
|
-
* @class FromModelController
|
|
38
|
-
*
|
|
39
|
-
* @example
|
|
40
|
-
* ```ts
|
|
41
|
-
* // Given a Decaf Model:
|
|
42
|
-
* class User extends Model<User> {
|
|
43
|
-
* id!: string;
|
|
44
|
-
* name!: string;
|
|
45
|
-
* }
|
|
46
|
-
*
|
|
47
|
-
* // Register controller:
|
|
48
|
-
* const UserController = FromModelController.create(User);
|
|
49
|
-
*
|
|
50
|
-
* // NestJS will expose:
|
|
51
|
-
* // POST /user
|
|
52
|
-
* // GET /user/:id
|
|
53
|
-
* // GET /user/query/:method
|
|
54
|
-
* // PUT /user/:id
|
|
55
|
-
* // DELETE /user/:id
|
|
56
|
-
* ```
|
|
57
|
-
*
|
|
58
|
-
* @mermaid
|
|
59
|
-
* sequenceDiagram
|
|
60
|
-
* participant Client
|
|
61
|
-
* participant Controller
|
|
62
|
-
* participant Repo
|
|
63
|
-
* participant DB
|
|
64
|
-
*
|
|
65
|
-
* Client->>Controller: HTTP Request
|
|
66
|
-
* Controller->>Repo: Resolve repository for Model
|
|
67
|
-
* Repo->>DB: Execute DB operation
|
|
68
|
-
* DB-->>Repo: DB Result
|
|
69
|
-
* Repo-->>Controller: Model Instance(s)
|
|
70
|
-
* Controller-->>Client: JSON Response
|
|
71
|
-
*/
|
|
20
|
+
import { RepoFactory } from "./../RepoFactory.js";
|
|
72
21
|
export class FromModelController {
|
|
73
22
|
static { this.log = Logging.for(FromModelController.name); }
|
|
74
23
|
static create(ModelClazz) {
|
|
@@ -80,26 +29,24 @@ export class FromModelController {
|
|
|
80
29
|
const { description, apiProperties, path } = FromModelController.getRouteParametersFromModel(ModelClazz);
|
|
81
30
|
log.debug(`Creating controller for model: ${modelClazzName}`);
|
|
82
31
|
let DynamicModelController = class DynamicModelController extends LoggedClass {
|
|
83
|
-
constructor(
|
|
32
|
+
constructor(repoFactory) {
|
|
84
33
|
super();
|
|
85
|
-
this.
|
|
86
|
-
this.pk = Model.pk(ModelClazz);
|
|
34
|
+
this.repoFactory = repoFactory;
|
|
87
35
|
log.info(`Registering dynamic controller for model: ${modelClazzName} route: /${routePath}`);
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
return this._repo;
|
|
36
|
+
try {
|
|
37
|
+
this.repo = this.repoFactory.for(ModelClazz.name);
|
|
38
|
+
this.pk = Model.pk(ModelClazz);
|
|
39
|
+
}
|
|
40
|
+
catch (e) {
|
|
41
|
+
this.log.error(`Failed to initialize repository for model "${ModelClazz.name}".`, e);
|
|
42
|
+
}
|
|
96
43
|
}
|
|
97
44
|
async create(data) {
|
|
98
45
|
const log = this.log.for(this.create);
|
|
99
46
|
log.verbose(`creating new ${modelClazzName}`);
|
|
100
47
|
let created;
|
|
101
48
|
try {
|
|
102
|
-
created = await this.
|
|
49
|
+
created = await this.repo.create(data);
|
|
103
50
|
}
|
|
104
51
|
catch (e) {
|
|
105
52
|
log.error(`Failed to create new ${modelClazzName}`, e);
|
|
@@ -114,7 +61,7 @@ export class FromModelController {
|
|
|
114
61
|
let read;
|
|
115
62
|
try {
|
|
116
63
|
log.debug(`reading ${modelClazzName} with ${this.pk} ${id}`);
|
|
117
|
-
read = await this.
|
|
64
|
+
read = await this.repo.read(id);
|
|
118
65
|
}
|
|
119
66
|
catch (e) {
|
|
120
67
|
log.error(`Failed to read ${modelClazzName} with id ${id}`, e);
|
|
@@ -128,7 +75,7 @@ export class FromModelController {
|
|
|
128
75
|
let results;
|
|
129
76
|
try {
|
|
130
77
|
log.debug(`Querying ${modelClazzName} using method "${method}"`);
|
|
131
|
-
results = await this.
|
|
78
|
+
results = await this.repo[method]();
|
|
132
79
|
}
|
|
133
80
|
catch (e) {
|
|
134
81
|
log.error(`Failed to query ${modelClazzName} using method "${method}"`, e);
|
|
@@ -142,7 +89,7 @@ export class FromModelController {
|
|
|
142
89
|
let updated;
|
|
143
90
|
try {
|
|
144
91
|
log.info(`updating ${modelClazzName} with ${this.pk} ${body[this.pk]}`);
|
|
145
|
-
updated = await this.
|
|
92
|
+
updated = await this.repo.create(body);
|
|
146
93
|
}
|
|
147
94
|
catch (e) {
|
|
148
95
|
log.error(e);
|
|
@@ -155,7 +102,7 @@ export class FromModelController {
|
|
|
155
102
|
let read;
|
|
156
103
|
try {
|
|
157
104
|
log.debug(`deleting ${modelClazzName} with ${this.pk} ${routeParams}`);
|
|
158
|
-
read = await this.
|
|
105
|
+
read = await this.repo.read("id");
|
|
159
106
|
}
|
|
160
107
|
catch (e) {
|
|
161
108
|
log.error(`Failed to delete ${modelClazzName} with id ${"id"}`, e);
|
|
@@ -256,7 +203,7 @@ export class FromModelController {
|
|
|
256
203
|
Controller(routePath),
|
|
257
204
|
ApiTags(modelClazzName),
|
|
258
205
|
ApiExtraModels(ModelClazz),
|
|
259
|
-
__metadata("design:paramtypes", [
|
|
206
|
+
__metadata("design:paramtypes", [RepoFactory])
|
|
260
207
|
], DynamicModelController);
|
|
261
208
|
return DynamicModelController;
|
|
262
209
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FromModelController.js","sourceRoot":"","sources":["../../../src/decaf-model/FromModelController.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EACL,qBAAqB,EACrB,OAAO,EACP,kBAAkB,EAClB,cAAc,EACd,mBAAmB,EACnB,aAAa,EACb,YAAY,EACZ,QAAQ,EACR,OAAO,EACP,8BAA8B,EAC9B,aAAa,GACd,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"FromModelController.js","sourceRoot":"","sources":["../../../src/decaf-model/FromModelController.ts"],"names":[],"mappings":"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"}
|
package/lib/esm/decoration.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { InjectablesKeys, } from "@decaf-ts/injectable-decorators";
|
|
1
|
+
import { DefaultInjectablesConfig, InjectablesKeys, } from "@decaf-ts/injectable-decorators";
|
|
2
2
|
import { Inject, Injectable, Scope } from "@nestjs/common";
|
|
3
3
|
import { Decoration, DecorationKeys } from "@decaf-ts/decoration";
|
|
4
4
|
import { ValidationKeys } from "@decaf-ts/decorator-validation";
|
|
@@ -7,6 +7,11 @@ import { ApiProperty } from "@nestjs/swagger";
|
|
|
7
7
|
Decoration.for(InjectablesKeys.INJECTABLE)
|
|
8
8
|
.extend({
|
|
9
9
|
decorator: function nestInjectable(category, cfg) {
|
|
10
|
+
cfg =
|
|
11
|
+
cfg ||
|
|
12
|
+
(typeof category === "object"
|
|
13
|
+
? Object.assign(category, DefaultInjectablesConfig)
|
|
14
|
+
: DefaultInjectablesConfig);
|
|
10
15
|
return Injectable({
|
|
11
16
|
scope: cfg.singleton ? Scope.DEFAULT : Scope.REQUEST,
|
|
12
17
|
durable: cfg.singleton ? undefined : true,
|