Skip to content

Commit 55b0365

Browse files
committed
feat(user): get user benchmarks
1 parent d42306a commit 55b0365

File tree

3 files changed

+29
-5
lines changed

3 files changed

+29
-5
lines changed

src/benchmarks/benchmark.service.ts

+7-3
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import { BadRequestException, Injectable } from '@nestjs/common';
2-
import { Repository } from 'typeorm';
32
import { InjectRepository } from '@nestjs/typeorm';
43
import { isUUID } from 'class-validator';
5-
import { CreateBenchmarkDto } from './dto/create-benchmark.dto';
6-
import { Benchmark } from './benchmark.entity';
4+
import { FindManyOptions, Repository } from 'typeorm';
75
import { User } from '../users/user.entity';
6+
import { Benchmark } from './benchmark.entity';
7+
import { CreateBenchmarkDto } from './dto/create-benchmark.dto';
88

99
@Injectable()
1010
export class BenchmarkService {
@@ -26,6 +26,10 @@ export class BenchmarkService {
2626
return this.benchmarkRepository.find({});
2727
}
2828

29+
async findBy(params: FindManyOptions<Benchmark>): Promise<Benchmark[]> {
30+
return this.benchmarkRepository.find(params);
31+
}
32+
2933
async findOne(id: string): Promise<Benchmark | undefined> {
3034
if (!isUUID(id)) {
3135
throw new BadRequestException(`Invalid benchmark id: ${id}`);

src/users/users.controller.ts

+20-1
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,19 @@ import {
1515
ApiParam,
1616
} from '@nestjs/swagger';
1717
import { JwtAuthGuard } from 'src/auth/jwt-auth.guard';
18+
import { Benchmark } from 'src/benchmarks/benchmark.entity';
19+
import { BenchmarkService } from 'src/benchmarks/benchmark.service';
1820
import { CreateUserDTO } from './dto/create-user.dto';
1921
import { FindUserDTO } from './dto/find-user.dto';
2022
import { User } from './user.entity';
2123
import { UsersService } from './users.service';
2224

2325
@Controller('users')
2426
export class UsersController {
25-
constructor(private readonly usersService: UsersService) {}
27+
constructor(
28+
private readonly usersService: UsersService,
29+
private readonly benchmarkService: BenchmarkService,
30+
) {}
2631

2732
@Post()
2833
async signupUser(
@@ -59,4 +64,18 @@ export class UsersController {
5964

6065
return user;
6166
}
67+
68+
@ApiOperation({ summary: 'Get benchmarks for user' })
69+
@ApiOkResponse({ type: [Benchmark], description: 'Array of benchmarks' })
70+
@Get(':username/benchmarks')
71+
async getBenchmarkForUser(
72+
@Param() userReq: { username: string },
73+
): Promise<Benchmark[]> {
74+
const user = await this.usersService.findOne(userReq);
75+
if (!user) {
76+
throw new NotFoundException('User not found');
77+
}
78+
79+
return this.benchmarkService.findBy({ where: { creator: user } });
80+
}
6281
}

src/users/users.module.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
import { Module } from '@nestjs/common';
22
import { TypeOrmModule } from '@nestjs/typeorm';
3+
import { BenchmarkModule } from 'src/benchmarks/benchmark.module';
34
import { User } from './user.entity';
45
import { UsersController } from './users.controller';
56
import { UsersService } from './users.service';
67

78
@Module({
8-
imports: [TypeOrmModule.forFeature([User])],
9+
imports: [BenchmarkModule, TypeOrmModule.forFeature([User])],
910
providers: [UsersService],
1011
controllers: [UsersController],
1112
exports: [UsersService],

0 commit comments

Comments
 (0)