Skip to content

Commit 0bd8932

Browse files
committed
πŸ› οΈ refactor: (BE) - feedback μ €μž₯ λ©”μ„œλ“œ 둜직 μˆ˜μ •
1 parent 682e2c4 commit 0bd8932

File tree

5 files changed

+38
-37
lines changed

5 files changed

+38
-37
lines changed

β€Žbackend/rest/src/constant/swagger.constant.tsβ€Ž

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { HttpStatus } from '@nestjs/common';
22
import { RedirectUrlResponseDto } from 'src/auth/dto/redirect-url.dto';
33
import { UserIdResponseDto } from 'src/auth/dto/user-id.dto';
44
import { DocsListResponseDto } from 'src/interview/dto/docs-list.dto';
5-
import { DocsGetResponseDto } from 'src/interview/dto/docs.dto';
5+
import { DocsResponseDto } from 'src/interview/dto/docs.dto';
66
import { DocsRequestDto } from 'src/interview/dto/request-docs.dto';
77
import { FeedbackRequestDto } from 'src/interview/dto/feedback.dto';
88

@@ -87,7 +87,7 @@ export const GET_INTERVIEW_DOCS_SWAGGER = {
8787
SUCCESS: {
8888
status: HttpStatus.OK,
8989
description: '성곡',
90-
type: DocsGetResponseDto,
90+
type: DocsResponseDto,
9191
},
9292
FAIL: {
9393
status: HttpStatus.UNAUTHORIZED,

β€Žbackend/rest/src/interview/repository/interview.repository.tsβ€Ž

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { DocsWhereCondition } from 'src/types/query.type';
22
import { DocsRequestDto } from '../dto/request-docs.dto';
3-
import { feedbackBoxDto } from '../dto/request-feedback.dto';
3+
import { FeedbackVO } from '@types';
44

55
export interface InterviewRepository<T> {
66
/**
@@ -50,19 +50,8 @@ export interface InterviewRepository<T> {
5050
deleteInterviewDocs(docsUUID: string): Promise<string>;
5151

5252
/**
53-
* feedback을 μ €μž₯ν•©λ‹ˆλ‹€.
54-
* @param userId user id
55-
* @param docs docs Entity
56-
* @param feedbackBoxDto startTime, innerIndex, content
57-
* @returns feedback id
53+
* feedback listλ₯Ό μ €μž₯ν•©λ‹ˆλ‹€.
54+
* @param feedbackVO
5855
*/
59-
saveFeedback({
60-
userId,
61-
docs,
62-
feedbackBoxDto,
63-
}: {
64-
userId: string;
65-
docs: T;
66-
feedbackBoxDto: feedbackBoxDto;
67-
}): Promise<number>;
56+
saveFeedbackList(feedbackVO: FeedbackVO<T>[]): Promise<void>;
6857
}

β€Žbackend/rest/src/interview/repository/typeorm-interview.repository.tsβ€Ž

Lines changed: 23 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@ import { InjectRepository } from '@nestjs/typeorm';
44
import { DocsWhereCondition } from 'src/types/query.type';
55
import { Repository } from 'typeorm';
66
import { DocsRequestDto } from '../dto/request-docs.dto';
7-
import { feedbackBoxDto } from '../dto/request-feedback.dto';
87
import { FeedbackBuilder } from '../entities/typeorm-feedback.builder';
98
import { TypeormFeedbackEntity } from '../entities/typeorm-feedback.entity';
109
import { InterviewDocsBuilder } from '../entities/typeorm-interview-docs.builder';
1110
import { TypeormInterviewDocsEntity } from '../entities/typeorm-interview-docs.entity';
1211
import { InterviewRepository } from './interview.repository';
12+
import { FeedbackVO } from '@types';
1313

1414
@Injectable()
1515
export class TypeormInterviewRepository implements InterviewRepository<TypeormInterviewDocsEntity> {
@@ -80,25 +80,28 @@ export class TypeormInterviewRepository implements InterviewRepository<TypeormIn
8080
return docsUUID;
8181
}
8282

83-
async saveFeedback({
84-
userId,
85-
docs,
86-
feedbackBoxDto,
87-
}: {
88-
userId: string;
89-
docs: TypeormInterviewDocsEntity;
90-
feedbackBoxDto: feedbackBoxDto;
91-
}): Promise<number> {
92-
const { startTime, innerIndex, content } = feedbackBoxDto;
93-
const feedback = new FeedbackBuilder()
94-
.setUserId(userId)
95-
.setDocs(docs)
96-
.setStartTime(startTime)
97-
.setInnerIndex(innerIndex)
98-
.setContent(content)
99-
.build();
83+
async saveFeedbackList(feedbackVoList: FeedbackVO<TypeormInterviewDocsEntity>[]) {
84+
const feedbackList = feedbackVoList.map((feedbackVO) => {
85+
const { userId, docs, feedbackBoxDto } = feedbackVO;
86+
const { startTime, innerIndex, content } = feedbackBoxDto;
87+
88+
const feedback = new FeedbackBuilder()
89+
.setUserId(userId)
90+
.setDocs(docs)
91+
.setStartTime(startTime)
92+
.setInnerIndex(innerIndex)
93+
.setContent(content)
94+
.build();
95+
96+
return feedback;
97+
});
10098

101-
const result = await this.feedbackRepository.save(feedback);
102-
return result.id;
99+
await this.feedbackRepository
100+
.createQueryBuilder()
101+
.insert()
102+
.into(TypeormFeedbackEntity)
103+
.values(feedbackList)
104+
.updateEntity(false)
105+
.execute();
103106
}
104107
}
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,4 @@
11
export * from './auth.type';
22
export * from './mock.type';
3+
export * from './query.type';
4+
export * from './interview.type';
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import { FeedbackBoxDto } from 'src/interview/dto/feedback.dto';
2+
3+
export interface FeedbackVO<T> {
4+
readonly userId: string;
5+
readonly docs: T;
6+
readonly feedbackBoxDto: FeedbackBoxDto;
7+
}

0 commit comments

Comments
Β (0)