From 2a5296788adef83c98c345d76d9e63aba04a82bc Mon Sep 17 00:00:00 2001 From: Hentry Martin Date: Tue, 12 Aug 2025 17:06:24 +0200 Subject: [PATCH 1/2] fix: filters in search API --- .circleci/config.yml | 1 + src/api/scorecard/scorecard.controller.ts | 25 +++++++++++++++++++++++ src/api/scorecard/scorecard.service.ts | 13 ++++++++++++ src/dto/scorecard.dto.ts | 3 +++ 4 files changed, 42 insertions(+) diff --git a/.circleci/config.yml b/.circleci/config.yml index 13fd08a..47eef83 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -76,6 +76,7 @@ workflows: - develop - feat/ai-workflows - feat/scorecards + - filters-fix - 'build-prod': context: org-global filters: diff --git a/src/api/scorecard/scorecard.controller.ts b/src/api/scorecard/scorecard.controller.ts index 78c978f..1eda524 100644 --- a/src/api/scorecard/scorecard.controller.ts +++ b/src/api/scorecard/scorecard.controller.ts @@ -31,6 +31,7 @@ import { import { ChallengeTrack } from 'src/shared/enums/challengeTrack.enum'; import { ScoreCardService } from './scorecard.service'; import { PaginationHeaderInterceptor } from 'src/interceptors/PaginationHeaderInterceptor'; +import { $Enums } from '@prisma/client'; @ApiTags('Scorecard') @ApiBearerAuth() @@ -152,6 +153,18 @@ export class ScorecardController { example: 'Hackathon', required: false, }) + @ApiQuery({ + name: 'scorecardType', + description: 'The scorecard type to filter by', + example: 'SCREENING', + required: false, + }) + @ApiQuery({ + name: 'status', + description: 'The status to filter by', + example: 'ACTIVE', + required: false, + }) @ApiQuery({ name: 'name', description: 'The challenge name to filter by (partial match)', @@ -181,6 +194,9 @@ export class ScorecardController { async searchScorecards( @Query('challengeTrack') challengeTrack?: ChallengeTrack | ChallengeTrack[], @Query('challengeType') challengeType?: string | string[], + @Query('status') status?: $Enums.ScorecardStatus | $Enums.ScorecardStatus[], + @Query('scorecardType') + scorecardType?: $Enums.ScorecardType | $Enums.ScorecardType[], @Query('name') name?: string, @Query('page') page: number = 1, @Query('perPage') perPage: number = 10, @@ -195,12 +211,21 @@ export class ScorecardController { : challengeType ? [challengeType] : []; + const scorecardTypesArray = Array.isArray(scorecardType) + ? scorecardType + : scorecardType + ? [scorecardType] + : []; + const statusArray = Array.isArray(status) ? status : status ? [status] : []; + const result = await this.scorecardService.getScoreCards({ challengeTrack: challengeTrackArray, challengeType: challengeTypeArray, name, page, perPage, + scorecardTypesArray, + statusArray, }); return result; } diff --git a/src/api/scorecard/scorecard.service.ts b/src/api/scorecard/scorecard.service.ts index 1a72fde..530fa0b 100644 --- a/src/api/scorecard/scorecard.service.ts +++ b/src/api/scorecard/scorecard.service.ts @@ -147,6 +147,8 @@ export class ScoreCardService { perPage = 10, challengeTrack, challengeType, + scorecardTypesArray, + statusArray, name, } = query; const skip = (page - 1) * perPage; @@ -161,8 +163,19 @@ export class ScoreCardService { in: challengeType, }, }), + ...(scorecardTypesArray?.length && { + type: { + in: scorecardTypesArray, + }, + }), + ...(statusArray?.length && { + status: { + in: statusArray, + }, + }), ...(name && { name: { contains: name, mode: 'insensitive' } }), }; + console.log(where, 'asdkjalsd'); const data = await this.prisma.scorecard.findMany({ where, skip, diff --git a/src/dto/scorecard.dto.ts b/src/dto/scorecard.dto.ts index 543efc4..19db58e 100644 --- a/src/dto/scorecard.dto.ts +++ b/src/dto/scorecard.dto.ts @@ -1,4 +1,5 @@ import { ApiProperty } from '@nestjs/swagger'; +import { $Enums } from '@prisma/client'; export enum ScorecardStatus { ACTIVE = 'ACTIVE', @@ -267,6 +268,8 @@ export class ScorecardQueryDto { name?: string; page?: number; perPage?: number; + statusArray?: $Enums.ScorecardStatus[]; + scorecardTypesArray?: $Enums.ScorecardType[]; } export function mapScorecardRequestToDto(request: ScorecardRequestDto) { From 08ded77dc4b38163453c140ee9fc67bddaef9d81 Mon Sep 17 00:00:00 2001 From: Hentry Martin Date: Tue, 12 Aug 2025 17:20:25 +0200 Subject: [PATCH 2/2] removed console log --- src/api/scorecard/scorecard.service.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/api/scorecard/scorecard.service.ts b/src/api/scorecard/scorecard.service.ts index 530fa0b..51e73fa 100644 --- a/src/api/scorecard/scorecard.service.ts +++ b/src/api/scorecard/scorecard.service.ts @@ -175,7 +175,6 @@ export class ScoreCardService { }), ...(name && { name: { contains: name, mode: 'insensitive' } }), }; - console.log(where, 'asdkjalsd'); const data = await this.prisma.scorecard.findMany({ where, skip,