From 2abc52a1481341b954f98d21aac170dc963b2365 Mon Sep 17 00:00:00 2001 From: janosbabik <143906591+janosbabik@users.noreply.github.com> Date: Fri, 24 Nov 2023 10:23:07 +0100 Subject: [PATCH] Fix: count endpoint in PublishedDataController is fixed (#912) --- .../published-data.controller.ts | 38 +++++++++---------- src/published-data/published-data.service.ts | 11 ++++-- 2 files changed, 26 insertions(+), 23 deletions(-) diff --git a/src/published-data/published-data.controller.ts b/src/published-data/published-data.controller.ts index c6a1d261f..fccd9251e 100644 --- a/src/published-data/published-data.controller.ts +++ b/src/published-data/published-data.controller.ts @@ -41,7 +41,7 @@ import { } from "./interfaces/published-data.interface"; import { AllowAny } from "src/auth/decorators/allow-any.decorator"; import { RegisteredInterceptor } from "./interceptors/registered.interceptor"; -import { FilterQuery } from "mongoose"; +import { FilterQuery, QueryOptions } from "mongoose"; import { DatasetsService } from "src/datasets/datasets.service"; import { ProposalsService } from "src/proposals/proposals.service"; import { AttachmentsService } from "src/attachments/attachments.service"; @@ -133,26 +133,24 @@ export class PublishedDataController { async count( @Query() filter?: { filter: string; fields: string }, ): Promise { - const jsonFilters: IPublishedDataFilters = - filter && filter.filter ? JSON.parse(filter.filter) : {}; - const jsonFields: FilterQuery = - filter && filter.fields ? JSON.parse(filter.fields) : {}; - const whereFilters: FilterQuery = - jsonFilters && jsonFilters.where - ? { - ...jsonFilters.where, - ...jsonFields, - } - : { - ...jsonFields, - }; - const publishedDataFilters: IPublishedDataFilters = { - where: whereFilters, + const jsonFilters: IPublishedDataFilters = filter?.filter + ? JSON.parse(filter.filter) + : {}; + const jsonFields: FilterQuery = filter?.fields + ? JSON.parse(filter.fields) + : {}; + + const filters: FilterQuery = { + ...jsonFilters.where, + ...jsonFields, }; - if (jsonFilters && jsonFilters.limits) { - publishedDataFilters.limits = jsonFilters.limits; - } - return this.publishedDataService.count(publishedDataFilters); + + const options: QueryOptions = { + limit: jsonFilters?.limits?.limit, + skip: jsonFilters?.limits?.skip, + }; + + return this.publishedDataService.countDocuments(filters, options); } // GET /publisheddata/formpopulate diff --git a/src/published-data/published-data.service.ts b/src/published-data/published-data.service.ts index 7c68b2c5c..1296f86ac 100644 --- a/src/published-data/published-data.service.ts +++ b/src/published-data/published-data.service.ts @@ -2,7 +2,7 @@ import { Inject, Injectable, Scope } from "@nestjs/common"; import { REQUEST } from "@nestjs/core"; import { Request } from "express"; import { InjectModel } from "@nestjs/mongoose"; -import { FilterQuery, Model } from "mongoose"; +import { FilterQuery, Model, QueryOptions } from "mongoose"; import { parseLimitFilters, addCreatedByFields, @@ -66,8 +66,13 @@ export class PublishedDataService { .exec(); } - async count(filter: FilterQuery): Promise { - const count = await this.publishedDataModel.count(filter).exec(); + async countDocuments( + filter: FilterQuery, + options?: QueryOptions, + ): Promise { + const count = await this.publishedDataModel + .countDocuments(filter, options) + .exec(); return { count }; }