diff --git a/CHANGELOG.md b/CHANGELOG.md index 5ec018855..fdc3c99fc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Restricted the modification of activity tags in the impersonation mode - Hardened the endpoint of the public access for portfolio sharing by restricting it to public accesses +- Improved the parsing of integer query parameters (`skip` and `take`) in the `GET api/v1/admin/user` endpoint +- Improved the parsing of integer query parameters (`skip` and `take`) in the `GET api/v1/asset-profiles` endpoint - Improved the language localization by translating various tooltips across the application - Improved the language localization for Ukrainian (`uk`) - Upgraded `yahoo-finance2` from version `3.14.3` to `3.15.4` diff --git a/apps/api/src/app/admin/admin.controller.ts b/apps/api/src/app/admin/admin.controller.ts index a6f6e8b6f..019468dfd 100644 --- a/apps/api/src/app/admin/admin.controller.ts +++ b/apps/api/src/app/admin/admin.controller.ts @@ -40,6 +40,7 @@ import { Inject, Logger, Param, + ParseIntPipe, Patch, Post, Put, @@ -319,12 +320,12 @@ export class AdminController { @HasPermission(permissions.accessAdminControl) @UseGuards(AuthGuard('jwt'), HasPermissionGuard) public async getUsers( - @Query('skip') skip?: number, - @Query('take') take?: number + @Query('skip', new ParseIntPipe({ optional: true })) skip?: number, + @Query('take', new ParseIntPipe({ optional: true })) take?: number ): Promise { return this.adminService.getUsers({ - skip: isNaN(skip) ? undefined : skip, - take: isNaN(take) ? undefined : take + skip, + take }); } diff --git a/apps/api/src/app/endpoints/asset-profiles/asset-profiles.controller.ts b/apps/api/src/app/endpoints/asset-profiles/asset-profiles.controller.ts index fcddb0bc3..d74f167a6 100644 --- a/apps/api/src/app/endpoints/asset-profiles/asset-profiles.controller.ts +++ b/apps/api/src/app/endpoints/asset-profiles/asset-profiles.controller.ts @@ -22,6 +22,7 @@ import { HttpException, Inject, Param, + ParseIntPipe, Patch, Query, UseGuards, @@ -51,10 +52,10 @@ export class AssetProfilesController { @Query('dataSource') filterByDataSource?: string, @Query('presetId') presetId?: MarketDataPreset, @Query('query') filterBySearchQuery?: string, - @Query('skip') skip?: number, + @Query('skip', new ParseIntPipe({ optional: true })) skip?: number, @Query('sortColumn') sortColumn?: string, @Query('sortDirection') sortDirection?: Prisma.SortOrder, - @Query('take') take?: number + @Query('take', new ParseIntPipe({ optional: true })) take?: number ): Promise { const filters = this.apiService.buildFiltersFromQueryParams({ filterByAssetSubClasses, @@ -65,10 +66,10 @@ export class AssetProfilesController { return this.assetProfilesService.getAssetProfiles({ filters, presetId, + skip, sortColumn, sortDirection, - skip: isNaN(skip) ? undefined : skip, - take: isNaN(take) ? undefined : take + take }); }