@decaf-ts/for-nest 0.1.8 → 0.1.9
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 +1 -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/decaf-model/DecafModelModule.cjs +9 -4
- package/lib/decaf-model/DecafModelModule.d.ts +3 -3
- package/lib/decaf-model/DecafModelModule.js.map +1 -1
- package/lib/decaf-model/FromModelController.cjs +355 -53
- package/lib/decaf-model/FromModelController.d.ts +6 -2
- package/lib/decaf-model/FromModelController.js.map +1 -1
- package/lib/decaf-model/decorators/ApiOperationFromModel.cjs +22 -0
- package/lib/decaf-model/decorators/ApiOperationFromModel.d.ts +9 -0
- package/lib/decaf-model/decorators/ApiOperationFromModel.js.map +1 -1
- package/lib/decaf-model/decorators/ApiParamsFromModel.d.ts +2 -2
- package/lib/decaf-model/decorators/ApiParamsFromModel.js.map +1 -1
- package/lib/decaf-model/decorators/DecafParams.cjs +9 -1
- package/lib/decaf-model/decorators/DecafParams.d.ts +2 -2
- package/lib/decaf-model/decorators/DecafParams.js.map +1 -1
- package/lib/decaf-model/decorators/types.d.ts +5 -5
- package/lib/decaf-model/types.cjs +15 -0
- package/lib/decaf-model/types.d.ts +18 -0
- package/lib/decaf-model/types.js.map +1 -0
- package/lib/decaf-model/utils.cjs +67 -0
- package/lib/decaf-model/utils.d.ts +7 -0
- package/lib/decaf-model/utils.js.map +1 -0
- package/lib/esm/decaf-model/DecafModelModule.d.ts +3 -3
- package/lib/esm/decaf-model/DecafModelModule.js +9 -4
- package/lib/esm/decaf-model/DecafModelModule.js.map +1 -1
- package/lib/esm/decaf-model/FromModelController.d.ts +6 -2
- package/lib/esm/decaf-model/FromModelController.js +359 -57
- package/lib/esm/decaf-model/FromModelController.js.map +1 -1
- package/lib/esm/decaf-model/decorators/ApiOperationFromModel.d.ts +9 -0
- package/lib/esm/decaf-model/decorators/ApiOperationFromModel.js +22 -1
- package/lib/esm/decaf-model/decorators/ApiOperationFromModel.js.map +1 -1
- package/lib/esm/decaf-model/decorators/ApiParamsFromModel.d.ts +2 -2
- package/lib/esm/decaf-model/decorators/ApiParamsFromModel.js.map +1 -1
- package/lib/esm/decaf-model/decorators/DecafParams.d.ts +2 -2
- package/lib/esm/decaf-model/decorators/DecafParams.js +9 -1
- package/lib/esm/decaf-model/decorators/DecafParams.js.map +1 -1
- package/lib/esm/decaf-model/decorators/types.d.ts +5 -5
- package/lib/esm/decaf-model/types.d.ts +18 -0
- package/lib/esm/decaf-model/types.js +11 -0
- package/lib/esm/decaf-model/types.js.map +1 -0
- package/lib/esm/decaf-model/utils.d.ts +7 -0
- package/lib/esm/decaf-model/utils.js +61 -0
- package/lib/esm/decaf-model/utils.js.map +1 -0
- package/lib/esm/factory/NestBootstraper.js +2 -10
- package/lib/esm/factory/NestBootstraper.js.map +1 -1
- package/lib/esm/factory/context.d.ts +0 -0
- package/lib/esm/factory/context.js +2 -0
- package/lib/esm/factory/context.js.map +1 -0
- package/lib/esm/factory/exceptions/DecafErrorFilter.d.ts +4 -0
- package/lib/esm/factory/exceptions/DecafErrorFilter.js +32 -0
- package/lib/esm/factory/exceptions/DecafErrorFilter.js.map +1 -0
- package/lib/esm/factory/exceptions/decorators.d.ts +1 -0
- package/lib/esm/factory/exceptions/decorators.js +6 -0
- package/lib/esm/factory/exceptions/decorators.js.map +1 -0
- package/lib/esm/factory/exceptions/index.d.ts +2 -7
- package/lib/esm/factory/exceptions/index.js +2 -7
- package/lib/esm/factory/exceptions/index.js.map +1 -1
- package/lib/esm/module.js +5 -2
- package/lib/esm/module.js.map +1 -1
- package/lib/esm/types.d.ts +1 -0
- package/lib/factory/NestBootstraper.cjs +1 -9
- package/lib/factory/NestBootstraper.js.map +1 -1
- package/lib/factory/context.cjs +2 -0
- package/lib/factory/context.d.ts +0 -0
- package/lib/factory/context.js.map +1 -0
- package/lib/factory/exceptions/DecafErrorFilter.cjs +35 -0
- package/lib/factory/exceptions/DecafErrorFilter.d.ts +4 -0
- package/lib/factory/exceptions/DecafErrorFilter.js.map +1 -0
- package/lib/factory/exceptions/decorators.cjs +9 -0
- package/lib/factory/exceptions/decorators.d.ts +1 -0
- package/lib/factory/exceptions/decorators.js.map +1 -0
- package/lib/factory/exceptions/index.cjs +2 -7
- package/lib/factory/exceptions/index.d.ts +2 -7
- package/lib/factory/exceptions/index.js.map +1 -1
- package/lib/module.cjs +5 -2
- package/lib/module.js.map +1 -1
- package/lib/types.d.ts +1 -0
- package/package.json +3 -3
- package/lib/esm/factory/exceptions/AuthorizationExceptionFilter.d.ts +0 -9
- package/lib/esm/factory/exceptions/AuthorizationExceptionFilter.js +0 -35
- package/lib/esm/factory/exceptions/AuthorizationExceptionFilter.js.map +0 -1
- package/lib/esm/factory/exceptions/ConflictExceptionFilter.d.ts +0 -9
- package/lib/esm/factory/exceptions/ConflictExceptionFilter.js +0 -35
- package/lib/esm/factory/exceptions/ConflictExceptionFilter.js.map +0 -1
- package/lib/esm/factory/exceptions/GlobalExceptionFilter.d.ts +0 -4
- package/lib/esm/factory/exceptions/GlobalExceptionFilter.js +0 -39
- package/lib/esm/factory/exceptions/GlobalExceptionFilter.js.map +0 -1
- package/lib/esm/factory/exceptions/HttpExceptionFilter.d.ts +0 -4
- package/lib/esm/factory/exceptions/HttpExceptionFilter.js +0 -27
- package/lib/esm/factory/exceptions/HttpExceptionFilter.js.map +0 -1
- package/lib/esm/factory/exceptions/HttpResponseError.d.ts +0 -13
- package/lib/esm/factory/exceptions/HttpResponseError.js +0 -21
- package/lib/esm/factory/exceptions/HttpResponseError.js.map +0 -1
- package/lib/esm/factory/exceptions/NotFoundExceptionFilter.d.ts +0 -9
- package/lib/esm/factory/exceptions/NotFoundExceptionFilter.js +0 -35
- package/lib/esm/factory/exceptions/NotFoundExceptionFilter.js.map +0 -1
- package/lib/esm/factory/exceptions/ValidationExceptionFilter.d.ts +0 -9
- package/lib/esm/factory/exceptions/ValidationExceptionFilter.js +0 -35
- package/lib/esm/factory/exceptions/ValidationExceptionFilter.js.map +0 -1
- package/lib/factory/exceptions/AuthorizationExceptionFilter.cjs +0 -39
- package/lib/factory/exceptions/AuthorizationExceptionFilter.d.ts +0 -9
- package/lib/factory/exceptions/AuthorizationExceptionFilter.js.map +0 -1
- package/lib/factory/exceptions/ConflictExceptionFilter.cjs +0 -39
- package/lib/factory/exceptions/ConflictExceptionFilter.d.ts +0 -9
- package/lib/factory/exceptions/ConflictExceptionFilter.js.map +0 -1
- package/lib/factory/exceptions/GlobalExceptionFilter.cjs +0 -42
- package/lib/factory/exceptions/GlobalExceptionFilter.d.ts +0 -4
- package/lib/factory/exceptions/GlobalExceptionFilter.js.map +0 -1
- package/lib/factory/exceptions/HttpExceptionFilter.cjs +0 -30
- package/lib/factory/exceptions/HttpExceptionFilter.d.ts +0 -4
- package/lib/factory/exceptions/HttpExceptionFilter.js.map +0 -1
- package/lib/factory/exceptions/HttpResponseError.cjs +0 -25
- package/lib/factory/exceptions/HttpResponseError.d.ts +0 -13
- package/lib/factory/exceptions/HttpResponseError.js.map +0 -1
- package/lib/factory/exceptions/NotFoundExceptionFilter.cjs +0 -39
- package/lib/factory/exceptions/NotFoundExceptionFilter.d.ts +0 -9
- package/lib/factory/exceptions/NotFoundExceptionFilter.js.map +0 -1
- package/lib/factory/exceptions/ValidationExceptionFilter.cjs +0 -39
- package/lib/factory/exceptions/ValidationExceptionFilter.d.ts +0 -9
- package/lib/factory/exceptions/ValidationExceptionFilter.js.map +0 -1
|
@@ -23,7 +23,9 @@ const decoration_1 = require("@decaf-ts/decoration");
|
|
|
23
23
|
const decorators_1 = require("./decorators/index.cjs");
|
|
24
24
|
const request_1 = require("./../request/index.cjs");
|
|
25
25
|
const constants_1 = require("./../constants.cjs");
|
|
26
|
+
const utils_1 = require("./utils.cjs");
|
|
26
27
|
const decorators_2 = require("./decorators/decorators.cjs");
|
|
28
|
+
const types_1 = require("./types.cjs");
|
|
27
29
|
/**
|
|
28
30
|
* @description
|
|
29
31
|
* Factory and utilities for generating dynamic NestJS controllers from Decaf {@link Model} definitions.
|
|
@@ -75,31 +77,123 @@ const decorators_2 = require("./decorators/decorators.cjs");
|
|
|
75
77
|
*/
|
|
76
78
|
class FromModelController {
|
|
77
79
|
static { this.log = logging_1.Logging.for(FromModelController.name); }
|
|
78
|
-
static
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
80
|
+
static getPersistence(ModelClazz) {
|
|
81
|
+
try {
|
|
82
|
+
return core_1.ModelService.forModel(ModelClazz);
|
|
83
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
84
|
+
}
|
|
85
|
+
catch (e) {
|
|
86
|
+
return core_1.Repository.forModel(ModelClazz);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
static createQueryRoutesFromRepository(persistence, prefix = core_1.PersistenceKeys.STATEMENT) {
|
|
90
|
+
const ModelConstr = persistence.class;
|
|
91
|
+
const methodQueries = decoration_1.Metadata.get(persistence.constructor, decoration_1.Metadata.key(core_1.PersistenceKeys.QUERY)) ?? {};
|
|
92
|
+
// create base class
|
|
93
|
+
class QueryController extends types_1.AbstractQueryController {
|
|
87
94
|
constructor(clientContext) {
|
|
88
|
-
super();
|
|
89
|
-
this.
|
|
90
|
-
this.pk = decorator_validation_1.Model.pk(ModelClazz);
|
|
91
|
-
log.info(`Registering dynamic controller for model: ${modelClazzName} route: /${routePath}`);
|
|
95
|
+
super(clientContext);
|
|
96
|
+
this._persistence = FromModelController.getPersistence(ModelConstr);
|
|
92
97
|
}
|
|
93
98
|
get persistence() {
|
|
94
|
-
if (!this._persistence)
|
|
95
|
-
this._persistence =
|
|
96
|
-
core_1.ModelService.getService(ModelClazz) ||
|
|
97
|
-
core_1.Repository.forModel(ModelClazz);
|
|
98
99
|
const adapterOptions = this.clientContext.get(constants_1.DECAF_ADAPTER_OPTIONS);
|
|
99
100
|
if (adapterOptions)
|
|
100
101
|
return this._persistence.for(adapterOptions);
|
|
101
102
|
return this._persistence;
|
|
102
103
|
}
|
|
104
|
+
}
|
|
105
|
+
for (const [methodName, objValues] of Object.entries(methodQueries)) {
|
|
106
|
+
const fields = objValues.fields ?? [];
|
|
107
|
+
const routePath = [prefix, methodName, ...fields.map((f) => `:${f}`)]
|
|
108
|
+
.filter((segment) => segment && segment.trim())
|
|
109
|
+
.join("/");
|
|
110
|
+
const handler = (0, utils_1.createRouteHandler)(methodName);
|
|
111
|
+
const descriptor = (0, utils_1.defineRouteMethod)(QueryController, methodName, handler);
|
|
112
|
+
if (descriptor) {
|
|
113
|
+
const decorators = (0, utils_1.getApiDecorators)(methodName, routePath);
|
|
114
|
+
(0, utils_1.applyApiDecorators)(QueryController, methodName, descriptor, decorators);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
return QueryController;
|
|
118
|
+
}
|
|
119
|
+
static create(ModelConstr) {
|
|
120
|
+
const log = FromModelController.log.for(FromModelController.create);
|
|
121
|
+
const tableName = decorator_validation_1.Model.tableName(ModelConstr);
|
|
122
|
+
const routePath = (0, logging_1.toKebabCase)(tableName);
|
|
123
|
+
const modelClazzName = ModelConstr.name;
|
|
124
|
+
const persistence = FromModelController.getPersistence(ModelConstr);
|
|
125
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
126
|
+
const { description, getPK, apiProperties, path } = FromModelController.getRouteParametersFromModel(ModelConstr);
|
|
127
|
+
log.debug(`Creating controller for model: ${modelClazzName}`);
|
|
128
|
+
const BaseController = FromModelController.createQueryRoutesFromRepository(persistence);
|
|
129
|
+
let DynamicModelController = class DynamicModelController extends BaseController {
|
|
130
|
+
constructor(clientContext) {
|
|
131
|
+
super(clientContext);
|
|
132
|
+
this.pk = decorator_validation_1.Model.pk(ModelConstr);
|
|
133
|
+
log.info(`Registering dynamic controller for model: ${modelClazzName} route: /${routePath}`);
|
|
134
|
+
}
|
|
135
|
+
//
|
|
136
|
+
// @ApiOperationFromModel(ModelClazz, "GET", "query/:condition/:orderBy")
|
|
137
|
+
// @ApiOperation({ summary: `Retrieve ${modelClazzName} records by query.` })
|
|
138
|
+
// @ApiParam({ name: "method", description: "Query method to be called" })
|
|
139
|
+
// @ApiOkResponse({
|
|
140
|
+
// description: `${modelClazzName} retrieved successfully.`,
|
|
141
|
+
// })
|
|
142
|
+
// @ApiNotFoundResponse({
|
|
143
|
+
// description: `No ${modelClazzName} records matches the query.`,
|
|
144
|
+
// })
|
|
145
|
+
// async query(
|
|
146
|
+
// @Param("condition") condition: Condition<any>,
|
|
147
|
+
// @Param("orderBy") orderBy: string,
|
|
148
|
+
// @QueryDetails() details: DirectionLimitOffset,
|
|
149
|
+
// ) {
|
|
150
|
+
// const {direction, limit, offset} = details;
|
|
151
|
+
// return this.persistence.query(condition, orderBy as keyof Model, direction, limit, offset);
|
|
152
|
+
// }
|
|
153
|
+
async listBy(key, details) {
|
|
154
|
+
return this.persistence.listBy(key, details.direction);
|
|
155
|
+
}
|
|
156
|
+
async paginateBy(key, page, details) {
|
|
157
|
+
return this.persistence.paginateBy(key, details.direction, details.limit);
|
|
158
|
+
}
|
|
159
|
+
async findOneBy(key, value) {
|
|
160
|
+
return this.persistence.findOneBy(key, value);
|
|
161
|
+
}
|
|
162
|
+
async findBy(key, value, details) {
|
|
163
|
+
return this.persistence.findBy(key, value);
|
|
164
|
+
}
|
|
165
|
+
async statement(name, args, details) {
|
|
166
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
167
|
+
const { direction, offset, limit } = details;
|
|
168
|
+
args = args.map((a) => (typeof a === "string" ? parseInt(a) : a) || a);
|
|
169
|
+
switch (name) {
|
|
170
|
+
case core_1.PreparedStatementKeys.FIND_BY:
|
|
171
|
+
break;
|
|
172
|
+
case core_1.PreparedStatementKeys.LIST_BY:
|
|
173
|
+
args.push(direction);
|
|
174
|
+
break;
|
|
175
|
+
case core_1.PreparedStatementKeys.PAGE_BY:
|
|
176
|
+
args.push(direction, limit);
|
|
177
|
+
break;
|
|
178
|
+
case core_1.PreparedStatementKeys.FIND_ONE_BY:
|
|
179
|
+
break;
|
|
180
|
+
}
|
|
181
|
+
return this.persistence.statement(name, ...args);
|
|
182
|
+
}
|
|
183
|
+
async createAll(data) {
|
|
184
|
+
const log = this.log.for(this.createAll);
|
|
185
|
+
log.verbose(`creating new ${modelClazzName}`);
|
|
186
|
+
let created;
|
|
187
|
+
try {
|
|
188
|
+
created = await this.persistence.createAll(data.map((d) => new ModelConstr(d)));
|
|
189
|
+
}
|
|
190
|
+
catch (e) {
|
|
191
|
+
log.error(`Failed to create new ${modelClazzName}`, e);
|
|
192
|
+
throw e;
|
|
193
|
+
}
|
|
194
|
+
log.info(`created new ${modelClazzName} with id ${created[this.pk]}`);
|
|
195
|
+
return created;
|
|
196
|
+
}
|
|
103
197
|
async create(data) {
|
|
104
198
|
const log = this.log.for(this.create);
|
|
105
199
|
log.verbose(`creating new ${modelClazzName}`);
|
|
@@ -114,8 +208,22 @@ class FromModelController {
|
|
|
114
208
|
log.info(`created new ${modelClazzName} with id ${created[this.pk]}`);
|
|
115
209
|
return created;
|
|
116
210
|
}
|
|
211
|
+
async readAll(ids) {
|
|
212
|
+
const log = this.log.for(this.readAll);
|
|
213
|
+
let read;
|
|
214
|
+
try {
|
|
215
|
+
log.debug(`reading ${ids.length} ${modelClazzName}: ${ids}`);
|
|
216
|
+
read = await this.persistence.readAll(ids);
|
|
217
|
+
}
|
|
218
|
+
catch (e) {
|
|
219
|
+
log.error(`Failed to ${modelClazzName} with id ${ids}`, e);
|
|
220
|
+
throw e;
|
|
221
|
+
}
|
|
222
|
+
log.info(`read ${read.length} ${modelClazzName}`);
|
|
223
|
+
return read;
|
|
224
|
+
}
|
|
117
225
|
async read(routeParams) {
|
|
118
|
-
const id = getPK(...routeParams.
|
|
226
|
+
const id = getPK(...routeParams.valuesInOrder);
|
|
119
227
|
if (typeof id === "undefined")
|
|
120
228
|
throw new db_decorators_1.ValidationError(`No ${this.pk} provided`);
|
|
121
229
|
const log = this.log.for(this.read);
|
|
@@ -131,30 +239,28 @@ class FromModelController {
|
|
|
131
239
|
log.info(`read ${modelClazzName} with id ${read[this.pk]}`);
|
|
132
240
|
return read;
|
|
133
241
|
}
|
|
134
|
-
async
|
|
135
|
-
const log = this.log.for(this.
|
|
136
|
-
let
|
|
242
|
+
async updateAll(body) {
|
|
243
|
+
const log = this.log.for(this.updateAll);
|
|
244
|
+
let updated;
|
|
137
245
|
try {
|
|
138
|
-
log.
|
|
139
|
-
|
|
140
|
-
results = await this.persistence.query(...args);
|
|
246
|
+
log.info(`updating ${body.length} ${modelClazzName}`);
|
|
247
|
+
updated = await this.persistence.updateAll(body);
|
|
141
248
|
}
|
|
142
249
|
catch (e) {
|
|
143
|
-
log.error(
|
|
250
|
+
log.error(e);
|
|
144
251
|
throw e;
|
|
145
252
|
}
|
|
146
|
-
|
|
147
|
-
return results;
|
|
253
|
+
return updated;
|
|
148
254
|
}
|
|
149
255
|
async update(routeParams, body) {
|
|
150
256
|
const log = this.log.for(this.update);
|
|
151
|
-
const id = getPK(...routeParams.
|
|
257
|
+
const id = getPK(...routeParams.valuesInOrder);
|
|
152
258
|
if (typeof id === "undefined")
|
|
153
259
|
throw new db_decorators_1.ValidationError(`No ${this.pk} provided`);
|
|
154
260
|
let updated;
|
|
155
261
|
try {
|
|
156
262
|
log.info(`updating ${modelClazzName} with ${this.pk} ${id}`);
|
|
157
|
-
updated = await this.persistence.update(new
|
|
263
|
+
updated = await this.persistence.update(new ModelConstr({
|
|
158
264
|
...body,
|
|
159
265
|
[this.pk]: id,
|
|
160
266
|
}));
|
|
@@ -165,9 +271,23 @@ class FromModelController {
|
|
|
165
271
|
}
|
|
166
272
|
return updated;
|
|
167
273
|
}
|
|
274
|
+
async deleteAll(ids) {
|
|
275
|
+
const log = this.log.for(this.deleteAll);
|
|
276
|
+
let read;
|
|
277
|
+
try {
|
|
278
|
+
log.debug(`deleting ${ids.length} ${modelClazzName}: ${ids}`);
|
|
279
|
+
read = await this.persistence.deleteAll(ids);
|
|
280
|
+
}
|
|
281
|
+
catch (e) {
|
|
282
|
+
log.error(`Failed to delete ${modelClazzName} with id ${ids}`, e);
|
|
283
|
+
throw e;
|
|
284
|
+
}
|
|
285
|
+
log.info(`deleted ${read.length} ${modelClazzName}`);
|
|
286
|
+
return read;
|
|
287
|
+
}
|
|
168
288
|
async delete(routeParams) {
|
|
169
289
|
const log = this.log.for(this.delete);
|
|
170
|
-
const id = getPK(...routeParams.
|
|
290
|
+
const id = getPK(...routeParams.valuesInOrder);
|
|
171
291
|
if (typeof id === "undefined")
|
|
172
292
|
throw new db_decorators_1.ValidationError(`No ${this.pk} provided`);
|
|
173
293
|
let del;
|
|
@@ -184,11 +304,153 @@ class FromModelController {
|
|
|
184
304
|
}
|
|
185
305
|
};
|
|
186
306
|
__decorate([
|
|
187
|
-
(0, decorators_1.ApiOperationFromModel)(
|
|
307
|
+
(0, decorators_1.ApiOperationFromModel)(ModelConstr, "GET", "listBy/:key"),
|
|
308
|
+
(0, swagger_1.ApiOperation)({ summary: `Retrieve ${modelClazzName} records by query.` }),
|
|
309
|
+
(0, swagger_1.ApiParam)({ name: "key", description: "the model key to sort by" }),
|
|
310
|
+
(0, swagger_1.ApiQuery)({ name: "direction", required: true, enum: core_1.OrderDirection }),
|
|
311
|
+
(0, swagger_1.ApiOkResponse)({
|
|
312
|
+
description: `${modelClazzName} listed successfully.`,
|
|
313
|
+
}),
|
|
314
|
+
__param(1, (0, common_1.Query)()),
|
|
315
|
+
__metadata("design:type", Function),
|
|
316
|
+
__metadata("design:paramtypes", [String, Object]),
|
|
317
|
+
__metadata("design:returntype", Promise)
|
|
318
|
+
], DynamicModelController.prototype, "listBy", null);
|
|
319
|
+
__decorate([
|
|
320
|
+
(0, decorators_1.ApiOperationFromModel)(ModelConstr, "GET", "paginateBy/:key/:page"),
|
|
321
|
+
(0, swagger_1.ApiOperation)({ summary: `Retrieve ${modelClazzName} records by query.` }),
|
|
322
|
+
(0, swagger_1.ApiParam)({ name: "key", description: "the model key to sort by" }),
|
|
323
|
+
(0, swagger_1.ApiParam)({
|
|
324
|
+
name: "page",
|
|
325
|
+
description: "the page to retrieve or the bookmark",
|
|
326
|
+
}),
|
|
327
|
+
(0, swagger_1.ApiQuery)({
|
|
328
|
+
name: "direction",
|
|
329
|
+
required: true,
|
|
330
|
+
enum: core_1.OrderDirection,
|
|
331
|
+
description: "the sort order",
|
|
332
|
+
}),
|
|
333
|
+
(0, swagger_1.ApiQuery)({ name: "limit", required: true, description: "the page size" }),
|
|
334
|
+
(0, swagger_1.ApiOkResponse)({
|
|
335
|
+
description: `${modelClazzName} listed paginated.`,
|
|
336
|
+
}),
|
|
337
|
+
__param(0, (0, common_1.Param)("key")),
|
|
338
|
+
__param(1, (0, common_1.Param)("page")),
|
|
339
|
+
__param(2, (0, common_1.Query)()),
|
|
340
|
+
__metadata("design:type", Function),
|
|
341
|
+
__metadata("design:paramtypes", [String, Object, Object]),
|
|
342
|
+
__metadata("design:returntype", Promise)
|
|
343
|
+
], DynamicModelController.prototype, "paginateBy", null);
|
|
344
|
+
__decorate([
|
|
345
|
+
(0, decorators_1.ApiOperationFromModel)(ModelConstr, "GET", "findOneBy/:key"),
|
|
346
|
+
(0, swagger_1.ApiOperation)({ summary: `Retrieve ${modelClazzName} records by query.` }),
|
|
347
|
+
(0, swagger_1.ApiParam)({ name: "key", description: "the model key to sort by" }),
|
|
348
|
+
(0, swagger_1.ApiOkResponse)({
|
|
349
|
+
description: `${modelClazzName} listed found.`,
|
|
350
|
+
}),
|
|
351
|
+
(0, swagger_1.ApiNotFoundResponse)({
|
|
352
|
+
description: `No ${modelClazzName} record matches the provided identifier.`,
|
|
353
|
+
}),
|
|
354
|
+
__param(0, (0, common_1.Param)("key")),
|
|
355
|
+
__param(1, (0, common_1.Param)("value")),
|
|
356
|
+
__metadata("design:type", Function),
|
|
357
|
+
__metadata("design:paramtypes", [String, Object]),
|
|
358
|
+
__metadata("design:returntype", Promise)
|
|
359
|
+
], DynamicModelController.prototype, "findOneBy", null);
|
|
360
|
+
__decorate([
|
|
361
|
+
(0, decorators_1.ApiOperationFromModel)(ModelConstr, "GET", "findBy/:key/:value"),
|
|
362
|
+
(0, swagger_1.ApiOperation)({ summary: `Retrieve ${modelClazzName} records by query.` }),
|
|
363
|
+
(0, swagger_1.ApiParam)({ name: "key", description: "the model key to compare" }),
|
|
364
|
+
(0, swagger_1.ApiParam)({ name: "value", description: "the value to match" }),
|
|
365
|
+
(0, swagger_1.ApiQuery)({
|
|
366
|
+
name: "direction",
|
|
367
|
+
required: true,
|
|
368
|
+
enum: core_1.OrderDirection,
|
|
369
|
+
description: "the sort order when applicable",
|
|
370
|
+
}),
|
|
371
|
+
(0, swagger_1.ApiOkResponse)({
|
|
372
|
+
description: `${modelClazzName} listed found.`,
|
|
373
|
+
}),
|
|
374
|
+
(0, swagger_1.ApiNotFoundResponse)({
|
|
375
|
+
description: `No ${modelClazzName} record matches the provided identifier.`,
|
|
376
|
+
}),
|
|
377
|
+
__param(0, (0, common_1.Param)("key")),
|
|
378
|
+
__param(1, (0, common_1.Param)("value")),
|
|
379
|
+
__param(2, (0, common_1.Query)()),
|
|
380
|
+
__metadata("design:type", Function),
|
|
381
|
+
__metadata("design:paramtypes", [String, Object, Object]),
|
|
382
|
+
__metadata("design:returntype", Promise)
|
|
383
|
+
], DynamicModelController.prototype, "findBy", null);
|
|
384
|
+
__decorate([
|
|
385
|
+
(0, decorators_1.ApiOperationFromModel)(ModelConstr, "GET", "statement/:method/*args"),
|
|
386
|
+
(0, swagger_1.ApiOperation)({
|
|
387
|
+
summary: `Executes a prepared statement on ${modelClazzName}.`,
|
|
388
|
+
}),
|
|
389
|
+
(0, swagger_1.ApiParam)({
|
|
390
|
+
name: "method",
|
|
391
|
+
description: "the prepared statement to execute",
|
|
392
|
+
}),
|
|
393
|
+
(0, swagger_1.ApiParam)({
|
|
394
|
+
name: "args",
|
|
395
|
+
description: "concatenated list of arguments the prepared statement can accept",
|
|
396
|
+
}),
|
|
397
|
+
(0, swagger_1.ApiQuery)({
|
|
398
|
+
name: "direction",
|
|
399
|
+
required: true,
|
|
400
|
+
enum: core_1.OrderDirection,
|
|
401
|
+
description: "the sort order when applicable",
|
|
402
|
+
}),
|
|
403
|
+
(0, swagger_1.ApiQuery)({
|
|
404
|
+
name: "limit",
|
|
405
|
+
required: true,
|
|
406
|
+
description: "limit or page size when applicable",
|
|
407
|
+
}),
|
|
408
|
+
(0, swagger_1.ApiQuery)({
|
|
409
|
+
name: "offset",
|
|
410
|
+
required: true,
|
|
411
|
+
description: "offset or bookmark when applicable",
|
|
412
|
+
}),
|
|
413
|
+
(0, swagger_1.ApiOkResponse)({
|
|
414
|
+
description: `${modelClazzName} listed found.`,
|
|
415
|
+
}),
|
|
416
|
+
(0, swagger_1.ApiNotFoundResponse)({
|
|
417
|
+
description: `No ${modelClazzName} record matches the provided identifier.`,
|
|
418
|
+
}),
|
|
419
|
+
__param(0, (0, common_1.Param)("method")),
|
|
420
|
+
__param(1, (0, common_1.Param)("args")),
|
|
421
|
+
__param(2, (0, common_1.Query)()),
|
|
422
|
+
__metadata("design:type", Function),
|
|
423
|
+
__metadata("design:paramtypes", [String, Array, Object]),
|
|
424
|
+
__metadata("design:returntype", Promise)
|
|
425
|
+
], DynamicModelController.prototype, "statement", null);
|
|
426
|
+
__decorate([
|
|
427
|
+
(0, decorators_1.ApiOperationFromModel)(ModelConstr, "POST", "bulk"),
|
|
428
|
+
(0, swagger_1.ApiOperation)({ summary: `Create a new ${modelClazzName}.` }),
|
|
429
|
+
(0, swagger_1.ApiBody)({
|
|
430
|
+
description: `Payload for ${modelClazzName}`,
|
|
431
|
+
schema: {
|
|
432
|
+
type: "array",
|
|
433
|
+
items: { $ref: (0, swagger_1.getSchemaPath)(ModelConstr) },
|
|
434
|
+
},
|
|
435
|
+
}),
|
|
436
|
+
(0, swagger_1.ApiCreatedResponse)({
|
|
437
|
+
description: `x ${modelClazzName} created successfully.`,
|
|
438
|
+
}),
|
|
439
|
+
(0, swagger_1.ApiBadRequestResponse)({ description: "Payload validation failed." }),
|
|
440
|
+
(0, swagger_1.ApiUnprocessableEntityResponse)({
|
|
441
|
+
description: "Repository rejected the provided payload.",
|
|
442
|
+
}),
|
|
443
|
+
__param(0, (0, common_1.Body)()),
|
|
444
|
+
__metadata("design:type", Function),
|
|
445
|
+
__metadata("design:paramtypes", [Array]),
|
|
446
|
+
__metadata("design:returntype", Promise)
|
|
447
|
+
], DynamicModelController.prototype, "createAll", null);
|
|
448
|
+
__decorate([
|
|
449
|
+
(0, decorators_1.ApiOperationFromModel)(ModelConstr, "POST"),
|
|
188
450
|
(0, swagger_1.ApiOperation)({ summary: `Create a new ${modelClazzName}.` }),
|
|
189
451
|
(0, swagger_1.ApiBody)({
|
|
190
452
|
description: `Payload for ${modelClazzName}`,
|
|
191
|
-
schema: { $ref: (0, swagger_1.getSchemaPath)(
|
|
453
|
+
schema: { $ref: (0, swagger_1.getSchemaPath)(ModelConstr) },
|
|
192
454
|
}),
|
|
193
455
|
(0, swagger_1.ApiCreatedResponse)({
|
|
194
456
|
description: `${modelClazzName} created successfully.`,
|
|
@@ -203,7 +465,22 @@ class FromModelController {
|
|
|
203
465
|
__metadata("design:returntype", Promise)
|
|
204
466
|
], DynamicModelController.prototype, "create", null);
|
|
205
467
|
__decorate([
|
|
206
|
-
(0, decorators_1.ApiOperationFromModel)(
|
|
468
|
+
(0, decorators_1.ApiOperationFromModel)(ModelConstr, "GET", "bulk/:ids"),
|
|
469
|
+
(0, swagger_1.ApiOperation)({ summary: `Retrieve a ${modelClazzName} record by id.` }),
|
|
470
|
+
(0, swagger_1.ApiQuery)({ name: "ids", required: true, type: "array" }),
|
|
471
|
+
(0, swagger_1.ApiOkResponse)({
|
|
472
|
+
description: `${modelClazzName} retrieved successfully.`,
|
|
473
|
+
}),
|
|
474
|
+
(0, swagger_1.ApiNotFoundResponse)({
|
|
475
|
+
description: `No ${modelClazzName} record matches the provided identifier.`,
|
|
476
|
+
}),
|
|
477
|
+
__param(0, (0, common_1.Query)("ids")),
|
|
478
|
+
__metadata("design:type", Function),
|
|
479
|
+
__metadata("design:paramtypes", [Array]),
|
|
480
|
+
__metadata("design:returntype", Promise)
|
|
481
|
+
], DynamicModelController.prototype, "readAll", null);
|
|
482
|
+
__decorate([
|
|
483
|
+
(0, decorators_1.ApiOperationFromModel)(ModelConstr, "GET", path),
|
|
207
484
|
(0, decorators_1.ApiParamsFromModel)(apiProperties),
|
|
208
485
|
(0, swagger_1.ApiOperation)({ summary: `Retrieve a ${modelClazzName} record by id.` }),
|
|
209
486
|
(0, swagger_1.ApiOkResponse)({
|
|
@@ -218,32 +495,42 @@ class FromModelController {
|
|
|
218
495
|
__metadata("design:returntype", Promise)
|
|
219
496
|
], DynamicModelController.prototype, "read", null);
|
|
220
497
|
__decorate([
|
|
221
|
-
(0, decorators_1.ApiOperationFromModel)(
|
|
222
|
-
(0,
|
|
223
|
-
(0, swagger_1.
|
|
498
|
+
(0, decorators_1.ApiOperationFromModel)(ModelConstr, "PUT", `${path}/bulk`),
|
|
499
|
+
(0, decorators_1.ApiParamsFromModel)(apiProperties),
|
|
500
|
+
(0, swagger_1.ApiOperation)({
|
|
501
|
+
summary: `Replace an existing ${modelClazzName} record with a new payload.`,
|
|
502
|
+
}),
|
|
503
|
+
(0, swagger_1.ApiBody)({
|
|
504
|
+
description: `Payload for replace a existing record of ${modelClazzName}`,
|
|
505
|
+
schema: {
|
|
506
|
+
type: "array",
|
|
507
|
+
items: { $ref: (0, swagger_1.getSchemaPath)(ModelConstr) },
|
|
508
|
+
},
|
|
509
|
+
}),
|
|
224
510
|
(0, swagger_1.ApiOkResponse)({
|
|
225
|
-
description: `${
|
|
511
|
+
description: `${ModelConstr} record replaced successfully.`,
|
|
226
512
|
}),
|
|
227
513
|
(0, swagger_1.ApiNotFoundResponse)({
|
|
228
|
-
description: `No ${modelClazzName}
|
|
514
|
+
description: `No ${modelClazzName} record matches the provided identifier.`,
|
|
229
515
|
}),
|
|
230
|
-
|
|
516
|
+
(0, swagger_1.ApiBadRequestResponse)({ description: "Payload validation failed." }),
|
|
517
|
+
__param(0, (0, common_1.Body)()),
|
|
231
518
|
__metadata("design:type", Function),
|
|
232
|
-
__metadata("design:paramtypes", [
|
|
519
|
+
__metadata("design:paramtypes", [Array]),
|
|
233
520
|
__metadata("design:returntype", Promise)
|
|
234
|
-
], DynamicModelController.prototype, "
|
|
521
|
+
], DynamicModelController.prototype, "updateAll", null);
|
|
235
522
|
__decorate([
|
|
236
|
-
(0, decorators_1.ApiOperationFromModel)(
|
|
523
|
+
(0, decorators_1.ApiOperationFromModel)(ModelConstr, "PUT", path),
|
|
237
524
|
(0, decorators_1.ApiParamsFromModel)(apiProperties),
|
|
238
525
|
(0, swagger_1.ApiOperation)({
|
|
239
526
|
summary: `Replace an existing ${modelClazzName} record with a new payload.`,
|
|
240
527
|
}),
|
|
241
528
|
(0, swagger_1.ApiBody)({
|
|
242
529
|
description: `Payload for replace a existing record of ${modelClazzName}`,
|
|
243
|
-
schema: { $ref: (0, swagger_1.getSchemaPath)(
|
|
530
|
+
schema: { $ref: (0, swagger_1.getSchemaPath)(ModelConstr) },
|
|
244
531
|
}),
|
|
245
532
|
(0, swagger_1.ApiOkResponse)({
|
|
246
|
-
description: `${
|
|
533
|
+
description: `${ModelConstr} record replaced successfully.`,
|
|
247
534
|
}),
|
|
248
535
|
(0, swagger_1.ApiNotFoundResponse)({
|
|
249
536
|
description: `No ${modelClazzName} record matches the provided identifier.`,
|
|
@@ -256,7 +543,23 @@ class FromModelController {
|
|
|
256
543
|
__metadata("design:returntype", Promise)
|
|
257
544
|
], DynamicModelController.prototype, "update", null);
|
|
258
545
|
__decorate([
|
|
259
|
-
(0, decorators_1.ApiOperationFromModel)(
|
|
546
|
+
(0, decorators_1.ApiOperationFromModel)(ModelConstr, "DELETE", "bulk/:ids"),
|
|
547
|
+
(0, decorators_1.ApiParamsFromModel)(apiProperties),
|
|
548
|
+
(0, swagger_1.ApiOperation)({ summary: `Retrieve a ${modelClazzName} record by id.` }),
|
|
549
|
+
(0, swagger_1.ApiQuery)({ name: "ids", required: true, type: "array" }),
|
|
550
|
+
(0, swagger_1.ApiOkResponse)({
|
|
551
|
+
description: `${modelClazzName} retrieved successfully.`,
|
|
552
|
+
}),
|
|
553
|
+
(0, swagger_1.ApiNotFoundResponse)({
|
|
554
|
+
description: `No ${modelClazzName} record matches the provided identifier.`,
|
|
555
|
+
}),
|
|
556
|
+
__param(0, (0, common_1.Query)("ids")),
|
|
557
|
+
__metadata("design:type", Function),
|
|
558
|
+
__metadata("design:paramtypes", [Array]),
|
|
559
|
+
__metadata("design:returntype", Promise)
|
|
560
|
+
], DynamicModelController.prototype, "deleteAll", null);
|
|
561
|
+
__decorate([
|
|
562
|
+
(0, decorators_1.ApiOperationFromModel)(ModelConstr, "DELETE", path),
|
|
260
563
|
(0, decorators_1.ApiParamsFromModel)(apiProperties),
|
|
261
564
|
(0, swagger_1.ApiOperation)({ summary: `Delete a ${modelClazzName} record by id.` }),
|
|
262
565
|
(0, swagger_1.ApiOkResponse)({
|
|
@@ -273,8 +576,8 @@ class FromModelController {
|
|
|
273
576
|
DynamicModelController = __decorate([
|
|
274
577
|
(0, common_1.Controller)(routePath),
|
|
275
578
|
(0, swagger_1.ApiTags)(modelClazzName),
|
|
276
|
-
(0, swagger_1.ApiExtraModels)(
|
|
277
|
-
(0, decorators_2.Auth)(
|
|
579
|
+
(0, swagger_1.ApiExtraModels)(ModelConstr),
|
|
580
|
+
(0, decorators_2.Auth)(ModelConstr),
|
|
278
581
|
__metadata("design:paramtypes", [request_1.DecafRequestContext])
|
|
279
582
|
], DynamicModelController);
|
|
280
583
|
return DynamicModelController;
|
|
@@ -283,13 +586,12 @@ class FromModelController {
|
|
|
283
586
|
const pk = decorator_validation_1.Model.pk(ModelClazz);
|
|
284
587
|
const composed = decoration_1.Metadata.get(ModelClazz, decoration_1.Metadata.key(db_decorators_1.DBKeys.COMPOSED, pk));
|
|
285
588
|
const composedKeys = composed?.args ?? [];
|
|
286
|
-
const keysToReturn = Array.isArray(composedKeys) && composedKeys.length > 0
|
|
287
|
-
? [...composedKeys]
|
|
288
|
-
: [pk];
|
|
289
|
-
const description = decoration_1.Metadata.description(ModelClazz);
|
|
290
589
|
// remove duplicates while preserving order
|
|
291
|
-
const uniqueKeys = Array.
|
|
292
|
-
|
|
590
|
+
const uniqueKeys = Array.isArray(composedKeys) && composedKeys.length > 0
|
|
591
|
+
? Array.from(new Set([...composedKeys]))
|
|
592
|
+
: Array.from(new Set([pk]));
|
|
593
|
+
const description = decoration_1.Metadata.description(ModelClazz);
|
|
594
|
+
const path = `:${uniqueKeys.join("/:")}`;
|
|
293
595
|
const apiProperties = uniqueKeys.map((key) => {
|
|
294
596
|
return {
|
|
295
597
|
name: key,
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
import { ModelService, type Repo } from "@decaf-ts/core";
|
|
1
2
|
import { Model, ModelConstructor } from "@decaf-ts/decorator-validation";
|
|
2
|
-
import type
|
|
3
|
+
import { type DecafModelRoute } from "./decorators";
|
|
4
|
+
import { AbstractQueryController, ControllerConstructor } from "./types";
|
|
3
5
|
/**
|
|
4
6
|
* @description
|
|
5
7
|
* Factory and utilities for generating dynamic NestJS controllers from Decaf {@link Model} definitions.
|
|
@@ -51,6 +53,8 @@ import type { DecafModelRoute } from "./decorators";
|
|
|
51
53
|
*/
|
|
52
54
|
export declare class FromModelController {
|
|
53
55
|
private static readonly log;
|
|
54
|
-
static
|
|
56
|
+
static getPersistence<T extends Model<boolean>>(ModelClazz: ModelConstructor<T>): Repo<T> | ModelService<T>;
|
|
57
|
+
static createQueryRoutesFromRepository<T extends Model<boolean>>(persistence: Repo<T> | ModelService<T>, prefix?: string): ControllerConstructor<AbstractQueryController>;
|
|
58
|
+
static create<T extends Model<any>>(ModelConstr: ModelConstructor<T>): any;
|
|
55
59
|
static getRouteParametersFromModel<T extends Model<any>>(ModelClazz: ModelConstructor<T>): DecafModelRoute;
|
|
56
60
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FromModelController.js","sourceRoot":"","sources":["../../src/decaf-model/FromModelController.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"FromModelController.js","sourceRoot":"","sources":["../../src/decaf-model/FromModelController.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.isOperationBlocked = isOperationBlocked;
|
|
4
4
|
exports.ApiOperationFromModel = ApiOperationFromModel;
|
|
5
|
+
exports.BulkApiOperationFromModel = BulkApiOperationFromModel;
|
|
5
6
|
const decoration_1 = require("@decaf-ts/decoration");
|
|
6
7
|
const common_1 = require("@nestjs/common");
|
|
7
8
|
const swagger_1 = require("@nestjs/swagger");
|
|
@@ -41,4 +42,25 @@ function ApiOperationFromModel(ModelConstructor, verb, path) {
|
|
|
41
42
|
? (0, reflection_1.apply)((0, swagger_1.ApiExcludeEndpoint)())
|
|
42
43
|
: (0, reflection_1.apply)(HttpMethodDecorator(path));
|
|
43
44
|
}
|
|
45
|
+
/**
|
|
46
|
+
* @description Conditionally applies an HTTP method decorator for a given model and verb, hiding the endpoint in Swagger (and not registering the route) when the model blocks that CRUD operation.
|
|
47
|
+
* @summary Maps an HTTP verb to its corresponding `CrudOperations` key and Nest HTTP decorator (`@Get`, `@Post`, etc.). It checks `isOperationBlocked(ModelConstructor, crudOp)` and, if blocked, applies only `@ApiExcludeEndpoint()` (Swagger-hidden, no Nest route). If permitted, it applies the appropriate HTTP decorator with the optional `path`.
|
|
48
|
+
* @param {ModelConstructor<any>} ModelConstructor - The model constructor used to resolve operation-blocking rules.
|
|
49
|
+
* @param {HttpVerbs} verb - The HTTP verb to map (e.g., `"GET" | "POST" | "PUT" | "PATCH" | "DELETE"`).
|
|
50
|
+
* @param {string} [path] - Optional route path passed through to the corresponding Nest HTTP method decorator.
|
|
51
|
+
* @return {MethodDecorator} A method decorator that either excludes the endpoint from Swagger (and route registration) or applies the correct HTTP decorator.
|
|
52
|
+
*/
|
|
53
|
+
function BulkApiOperationFromModel(ModelConstructor, verb, path) {
|
|
54
|
+
const httpToCrud = {
|
|
55
|
+
GET: [db_decorators_1.BulkCrudOperationKeys.READ_ALL, common_1.Get],
|
|
56
|
+
POST: [db_decorators_1.BulkCrudOperationKeys.CREATE_ALL, common_1.Post],
|
|
57
|
+
PUT: [db_decorators_1.BulkCrudOperationKeys.UPDATE_ALL, common_1.Put],
|
|
58
|
+
PATCH: [db_decorators_1.BulkCrudOperationKeys.UPDATE_ALL, common_1.Patch],
|
|
59
|
+
DELETE: [db_decorators_1.BulkCrudOperationKeys.DELETE_ALL, common_1.Delete],
|
|
60
|
+
};
|
|
61
|
+
const [crudOp, HttpMethodDecorator] = httpToCrud[verb];
|
|
62
|
+
return isOperationBlocked(ModelConstructor, crudOp)
|
|
63
|
+
? (0, reflection_1.apply)((0, swagger_1.ApiExcludeEndpoint)())
|
|
64
|
+
: (0, reflection_1.apply)(HttpMethodDecorator(path));
|
|
65
|
+
}
|
|
44
66
|
//# sourceMappingURL=ApiOperationFromModel.js.map
|