@elsikora/nestjs-crud-automator
Version:
A library for automating the creation of CRUD operations in NestJS.
112 lines (108 loc) • 5.46 kB
JavaScript
;
var tslib_es6 = require('../../external/tslib/tslib.es6.js');
var list_constant = require('../../constant/dto/list.constant.js');
var number_decorator = require('../../decorator/api/property/number.decorator.js');
var object_decorator = require('../../decorator/api/property/object.decorator.js');
require('../../enum/decorator/api/action.enum.js');
require('../../enum/decorator/api/authentication-type.enum.js');
require('../../enum/decorator/api/controller/load-relations-strategy.enum.js');
require('../../enum/decorator/api/controller/request-transformer-type.enum.js');
require('../../enum/decorator/api/dto-type.enum.js');
require('../../enum/decorator/api/function/type.enum.js');
require('../../enum/decorator/api/on-type.enum.js');
require('../../enum/decorator/api/property/data-type.enum.js');
require('../../enum/decorator/api/property/date/identifier.enum.js');
require('../../enum/decorator/api/property/date/type.enum.js');
require('../../enum/decorator/api/property/desribe-type.enum.js');
var numberType_enum = require('../../enum/decorator/api/property/number-type.enum.js');
require('../../enum/decorator/api/property/string-type.enum.js');
require('../../enum/decorator/api/route-type.enum.js');
var swagger = require('@nestjs/swagger');
/**
* Generates a DTO for paginated list responses with appropriate metadata.
* Creates a class with count, currentPage, items, totalCount, and totalPages properties,
* all properly decorated with Swagger and validation decorators.
* @param {TDtoGenerateGetListResponseResourceClass} resourceClass - The class representing the entity being listed
* @param {TDtoGenerateGetListResponseResourceClass} responseResourceClass - The response DTO class for individual items
* @param {string} name - The name for the generated DTO class
* @returns {Type<unknown>} A generated DTO class for paginated list responses
*/
function DtoGenerateGetListResponse(resourceClass, responseResourceClass, name) {
class ApiListGetResponse extends swagger.PickType(resourceClass, []) {
count;
currentPage;
items;
totalCount;
totalPages;
}
tslib_es6.__decorate([
number_decorator.ApiPropertyNumber({
description: "Total number of items on page",
entity: resourceClass,
exampleValue: list_constant.LIST_DTO_CONSTANT.MINIMUM_LIST_LENGTH,
format: numberType_enum.EApiPropertyNumberType.INTEGER,
isResponse: true,
maximum: list_constant.LIST_DTO_CONSTANT.MAXIMUM_LIST_LENGTH,
minimum: list_constant.LIST_DTO_CONSTANT.MINIMUM_LIST_LENGTH,
multipleOf: 1,
}),
tslib_es6.__metadata("design:type", Number)
], ApiListGetResponse.prototype, "count", void 0);
tslib_es6.__decorate([
number_decorator.ApiPropertyNumber({
description: "Current page number",
entity: resourceClass,
exampleValue: list_constant.LIST_DTO_CONSTANT.MINIMUM_LIST_PAGES_COUNT,
format: numberType_enum.EApiPropertyNumberType.INTEGER,
isResponse: true,
maximum: list_constant.LIST_DTO_CONSTANT.MAXIMUM_LIST_PAGES_COUNT,
minimum: list_constant.LIST_DTO_CONSTANT.MINIMUM_LIST_PAGES_COUNT,
multipleOf: 1,
}),
tslib_es6.__metadata("design:type", Number)
], ApiListGetResponse.prototype, "currentPage", void 0);
tslib_es6.__decorate([
object_decorator.ApiPropertyObject({
entity: resourceClass,
isArray: true,
isResponse: true,
isUniqueItems: true,
maxItems: list_constant.LIST_DTO_CONSTANT.MAXIMUM_LIST_LENGTH,
minItems: list_constant.LIST_DTO_CONSTANT.MINIMUM_LIST_LENGTH,
type: responseResourceClass,
}),
tslib_es6.__metadata("design:type", Array)
], ApiListGetResponse.prototype, "items", void 0);
tslib_es6.__decorate([
number_decorator.ApiPropertyNumber({
description: "Total number of items",
entity: resourceClass,
exampleValue: list_constant.LIST_DTO_CONSTANT.MINIMUM_LIST_LENGTH,
format: numberType_enum.EApiPropertyNumberType.INTEGER,
isResponse: true,
maximum: list_constant.LIST_DTO_CONSTANT.MAXIMUM_LIST_LENGTH,
minimum: list_constant.LIST_DTO_CONSTANT.MINIMUM_LIST_LENGTH,
multipleOf: 1,
}),
tslib_es6.__metadata("design:type", Number)
], ApiListGetResponse.prototype, "totalCount", void 0);
tslib_es6.__decorate([
number_decorator.ApiPropertyNumber({
description: "Total number of pages",
entity: resourceClass,
exampleValue: list_constant.LIST_DTO_CONSTANT.MINIMUM_LIST_PAGES_COUNT,
format: numberType_enum.EApiPropertyNumberType.INTEGER,
isResponse: true,
maximum: list_constant.LIST_DTO_CONSTANT.MAXIMUM_LIST_PAGES_COUNT,
minimum: list_constant.LIST_DTO_CONSTANT.MINIMUM_LIST_PAGES_COUNT,
multipleOf: 1,
}),
tslib_es6.__metadata("design:type", Number)
], ApiListGetResponse.prototype, "totalPages", void 0);
Object.defineProperty(ApiListGetResponse, "name", {
value: name,
});
return ApiListGetResponse;
}
exports.DtoGenerateGetListResponse = DtoGenerateGetListResponse;
//# sourceMappingURL=generate-get-list-response.utility.js.map