nestjs-paginate
Version:
Pagination and filtering helper method for TypeORM repositories or query builders using Nest.js framework.
58 lines • 2.88 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ApiOkPaginatedResponse = void 0;
const common_1 = require("@nestjs/common");
const swagger_1 = require("@nestjs/swagger");
const paginated_swagger_type_1 = require("./paginated-swagger.type");
const ApiOkPaginatedResponse = (dataDto,
// eslint-disable-next-line @typescript-eslint/no-explicit-any
paginatedConfig) => {
const cols = (paginatedConfig === null || paginatedConfig === void 0 ? void 0 : paginatedConfig.filterableColumns) || {};
return (0, common_1.applyDecorators)(...(typeof dataDto !== 'string' ? [(0, swagger_1.ApiExtraModels)(paginated_swagger_type_1.PaginatedDocumented, dataDto)] : []), (0, swagger_1.ApiOkResponse)({
schema: {
allOf: [
{ $ref: (0, swagger_1.getSchemaPath)(paginated_swagger_type_1.PaginatedDocumented) },
{
properties: {
data: {
type: 'array',
items: { $ref: (0, swagger_1.getSchemaPath)(dataDto) },
},
meta: {
properties: {
select: {
type: 'array',
items: {
type: 'string',
enum: paginatedConfig === null || paginatedConfig === void 0 ? void 0 : paginatedConfig.select,
},
},
filter: {
type: 'object',
properties: Object.keys(cols).reduce((acc, key) => {
acc[key] = {
oneOf: [
{
type: 'string',
},
{
type: 'array',
items: {
type: 'string',
},
},
],
};
return acc;
}, {}),
},
},
},
},
},
],
},
}));
};
exports.ApiOkPaginatedResponse = ApiOkPaginatedResponse;
//# sourceMappingURL=api-ok-paginated-response.decorator.js.map