Skip to content

Commit 8ee0fc1

Browse files
Mikadowsangristan
authored andcommitted
feat: add GET /benchmarks/:id route
1 parent c98fdb1 commit 8ee0fc1

3 files changed

Lines changed: 29 additions & 1 deletion

File tree

src/benchmarks/benchmark.controller.ts

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,21 @@
1-
import { Body, Controller, Get, Post, Request, UseGuards } from '@nestjs/common';
1+
import { Body, Controller, Get, Param, Post, Request, UseGuards } from '@nestjs/common';
22
import { CreateBenchmarkDto } from 'src/benchmarks/dto/create-benchmark.dto';
33
import { BenchmarkService } from 'src/benchmarks/benchmark.service';
44
import { Benchmark } from './benchmark.entity';
55
import { JwtAuthGuard } from '../auth/jwt-auth.guard';
66
import { ValidatedJWTReq } from '../auth/dto/validated-jwt-req';
7+
import { ApiBadRequestResponse, ApiOkResponse, ApiOperation } from '@nestjs/swagger';
8+
import { BenchmarkIdDto } from './dto/benchmarkId.dto';
79

810

911
@Controller('benchmarks')
1012
export class BenchmarkController {
1113
constructor(private readonly benchmarkService: BenchmarkService) {
1214
}
1315

16+
@ApiOperation({ summary: 'Create a benchmark' })
17+
@ApiOkResponse({type: Benchmark, description: 'Created benchmark'})
18+
1419
@Post()
1520
@UseGuards(JwtAuthGuard)
1621
async createBenchmark(
@@ -21,10 +26,21 @@ export class BenchmarkController {
2126
return this.benchmarkService.create(benchmark, req.user);
2227
}
2328

29+
@ApiOperation({ summary: 'Get all benchmarks' })
30+
@ApiOkResponse({type: [Benchmark], description: 'Array of benchmarks'})
2431
@Get()
2532
async getEveryBenchMarks() : Promise<Benchmark[]> {
2633
return this.benchmarkService.getAll();
2734
}
2835

36+
@ApiOperation({ summary: 'Get benchmark by id' })
37+
@ApiOkResponse({type: Benchmark, description: 'Requested benchmark'})
38+
@Get(':id')
39+
async getBenchmarkById(@Param() id: BenchmarkIdDto): Promise<Benchmark | undefined> {
40+
const benchmark = await this.benchmarkService.findOne(id);
41+
42+
return benchmark;
43+
}
44+
2945

3046
}

src/benchmarks/benchmark.service.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,8 @@ export class BenchmarkService {
2323
async getAll() : Promise<Benchmark[]> {
2424
return this.benchmarkRepository.find({});
2525
}
26+
27+
async findOne(id: { id: string }): Promise<Benchmark | undefined> {
28+
return this.benchmarkRepository.findOne(id);
29+
}
2630
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import { IsUUID } from 'class-validator';
2+
import { ApiProperty } from '@nestjs/swagger';
3+
4+
export class BenchmarkIdDto {
5+
@IsUUID('all')
6+
@ApiProperty()
7+
id: string;
8+
}

0 commit comments

Comments
 (0)