Skip to content

Commit 06adc63

Browse files
committed
feat: 사용자 정보 조회 API 캐시 적용
1 parent 12f1051 commit 06adc63

File tree

3 files changed

+19
-4
lines changed

3 files changed

+19
-4
lines changed

src/api/public/users/users.controller.ts

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
1-
import { Controller, Post } from '@nestjs/common';
1+
import { Controller, Post, UseInterceptors } from '@nestjs/common';
22
import { ApiTags } from '@nestjs/swagger';
33
import { ApiSkillBody } from 'src/api/common/decorators/api-skill-body.decorator';
44
import { SkillExtra } from 'src/api/common/decorators/skill-extra.decorator';
55
import { ResponseDTO } from 'src/api/common/dtos/response.dto';
6+
import { Cacheable } from 'src/cache/decorators/cache-key.decorator';
7+
import { RedisInterceptor } from 'src/cache/interceptors/redis.interceptor';
68
import { User } from '../../../type-orm/entities/users/users.entity';
79
import { CurrentUser } from './decorators/current-user.decorator';
810
import { ListCollegesRequestDto } from './dtos/requests/list-college-request.dto';
@@ -11,6 +13,7 @@ import { UpsertDepartmentRequestDto } from './dtos/requests/upsert-department-re
1113
import { UsersService } from './users.service';
1214

1315
@ApiTags('users')
16+
@UseInterceptors(RedisInterceptor)
1417
@Controller('users')
1518
export class UsersController {
1619
constructor(private readonly usersService: UsersService) {}
@@ -22,13 +25,21 @@ export class UsersController {
2225
}
2326

2427
@Post('campuses/list')
28+
@Cacheable({
29+
key: 'users-campuses-list',
30+
ttl: 60 * 60 * 24,
31+
})
2532
async listCampuses(): Promise<ResponseDTO> {
2633
const template = await this.usersService.campusesListCard();
2734
return new ResponseDTO(template);
2835
}
2936

3037
@Post('colleges/list')
3138
@ApiSkillBody(ListCollegesRequestDto)
39+
@Cacheable({
40+
key: 'users-colleges-list',
41+
ttl: 60 * 60 * 24,
42+
})
3243
async listColleges(
3344
@SkillExtra(ListCollegesRequestDto) extra: ListCollegesRequestDto,
3445
): Promise<ResponseDTO> {
@@ -38,6 +49,10 @@ export class UsersController {
3849

3950
@Post('departments/list')
4051
@ApiSkillBody(ListDepartmentsRequestDto)
52+
@Cacheable({
53+
key: 'users-departments-list',
54+
ttl: 60 * 60 * 24,
55+
})
4156
async listDepartments(
4257
@SkillExtra(ListDepartmentsRequestDto) extra: ListDepartmentsRequestDto,
4358
): Promise<ResponseDTO> {

src/api/public/users/users.module.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import { DepartmentsModule } from 'src/api/public/departments/departments.module
77
import { MessagesModule } from 'src/api/public/message-templates/messages.module';
88
import { AuthGuard } from 'src/api/public/users/guards/auth.guard';
99
import { CurrentUserMiddleware } from 'src/api/public/users/middlewares/current-user.middleware';
10+
import { RedisModule } from 'src/cache/redis.module';
1011
import { DatabaseModule } from '../../../type-orm/database.module';
1112
import { User } from '../../../type-orm/entities/users/users.entity';
1213
import { UsersRepository } from '../../../type-orm/entities/users/users.repository';
@@ -21,6 +22,7 @@ import { UsersService } from './users.service';
2122
CollegesModule,
2223
DepartmentsModule,
2324
MessagesModule,
25+
RedisModule,
2426
],
2527
controllers: [UsersController],
2628
providers: [

src/cache/redis.module.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import { Module } from '@nestjs/common';
22
import { ConfigService } from '@nestjs/config';
33
import Redis from 'ioredis';
4-
import { RedisInterceptor } from './interceptors/redis.interceptor';
54
import { RedisService } from './redis.service';
65

76
@Module({
@@ -18,8 +17,7 @@ import { RedisService } from './redis.service';
1817
},
1918
},
2019
RedisService,
21-
RedisInterceptor,
2220
],
23-
exports: [RedisService, RedisInterceptor],
21+
exports: [RedisService],
2422
})
2523
export class RedisModule {}

0 commit comments

Comments
 (0)