Skip to content

Commit 7bf1a5f

Browse files
authored
Merge pull request #16 from topcoder-platform/filters-fix
fix(Filters): In search API
2 parents 9562956 + 08ded77 commit 7bf1a5f

File tree

4 files changed

+41
-0
lines changed

4 files changed

+41
-0
lines changed

.circleci/config.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ workflows:
7676
- develop
7777
- feat/ai-workflows
7878
- feat/scorecards
79+
- filters-fix
7980
- 'build-prod':
8081
context: org-global
8182
filters:

src/api/scorecard/scorecard.controller.ts

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ import {
3131
import { ChallengeTrack } from 'src/shared/enums/challengeTrack.enum';
3232
import { ScoreCardService } from './scorecard.service';
3333
import { PaginationHeaderInterceptor } from 'src/interceptors/PaginationHeaderInterceptor';
34+
import { $Enums } from '@prisma/client';
3435

3536
@ApiTags('Scorecard')
3637
@ApiBearerAuth()
@@ -152,6 +153,18 @@ export class ScorecardController {
152153
example: 'Hackathon',
153154
required: false,
154155
})
156+
@ApiQuery({
157+
name: 'scorecardType',
158+
description: 'The scorecard type to filter by',
159+
example: 'SCREENING',
160+
required: false,
161+
})
162+
@ApiQuery({
163+
name: 'status',
164+
description: 'The status to filter by',
165+
example: 'ACTIVE',
166+
required: false,
167+
})
155168
@ApiQuery({
156169
name: 'name',
157170
description: 'The challenge name to filter by (partial match)',
@@ -181,6 +194,9 @@ export class ScorecardController {
181194
async searchScorecards(
182195
@Query('challengeTrack') challengeTrack?: ChallengeTrack | ChallengeTrack[],
183196
@Query('challengeType') challengeType?: string | string[],
197+
@Query('status') status?: $Enums.ScorecardStatus | $Enums.ScorecardStatus[],
198+
@Query('scorecardType')
199+
scorecardType?: $Enums.ScorecardType | $Enums.ScorecardType[],
184200
@Query('name') name?: string,
185201
@Query('page') page: number = 1,
186202
@Query('perPage') perPage: number = 10,
@@ -195,12 +211,21 @@ export class ScorecardController {
195211
: challengeType
196212
? [challengeType]
197213
: [];
214+
const scorecardTypesArray = Array.isArray(scorecardType)
215+
? scorecardType
216+
: scorecardType
217+
? [scorecardType]
218+
: [];
219+
const statusArray = Array.isArray(status) ? status : status ? [status] : [];
220+
198221
const result = await this.scorecardService.getScoreCards({
199222
challengeTrack: challengeTrackArray,
200223
challengeType: challengeTypeArray,
201224
name,
202225
page,
203226
perPage,
227+
scorecardTypesArray,
228+
statusArray,
204229
});
205230
return result;
206231
}

src/api/scorecard/scorecard.service.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,8 @@ export class ScoreCardService {
147147
perPage = 10,
148148
challengeTrack,
149149
challengeType,
150+
scorecardTypesArray,
151+
statusArray,
150152
name,
151153
} = query;
152154
const skip = (page - 1) * perPage;
@@ -161,6 +163,16 @@ export class ScoreCardService {
161163
in: challengeType,
162164
},
163165
}),
166+
...(scorecardTypesArray?.length && {
167+
type: {
168+
in: scorecardTypesArray,
169+
},
170+
}),
171+
...(statusArray?.length && {
172+
status: {
173+
in: statusArray,
174+
},
175+
}),
164176
...(name && { name: { contains: name, mode: 'insensitive' } }),
165177
};
166178
const data = await this.prisma.scorecard.findMany({

src/dto/scorecard.dto.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { ApiProperty } from '@nestjs/swagger';
2+
import { $Enums } from '@prisma/client';
23

34
export enum ScorecardStatus {
45
ACTIVE = 'ACTIVE',
@@ -267,6 +268,8 @@ export class ScorecardQueryDto {
267268
name?: string;
268269
page?: number;
269270
perPage?: number;
271+
statusArray?: $Enums.ScorecardStatus[];
272+
scorecardTypesArray?: $Enums.ScorecardType[];
270273
}
271274

272275
export function mapScorecardRequestToDto(request: ScorecardRequestDto) {

0 commit comments

Comments
 (0)