Skip to content

Commit 4d79f7d

Browse files
committed
modify: Leaderboard Repo 쿼리시 오는 RawResult 타입 정의
any로 두었을 때 lint 검증 및 실행은 잘 되었으나, 테스트 코드 작성시 에러 나서 내부에 정의
1 parent 9a194dd commit 4d79f7d

File tree

1 file changed

+52
-22
lines changed

1 file changed

+52
-22
lines changed
Lines changed: 52 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
import logger from '@/configs/logger.config';
22
import { LeaderboardRepository } from '@/repositories/leaderboard.repository';
3-
import { LeaderboardResponseData } from '@/types/dto/responses/leaderboardResponse.type';
3+
import {
4+
LeaderboardPostType,
5+
LeaderboardResponseData,
6+
LeaderboardUserType,
7+
} from '@/types/dto/responses/leaderboardResponse.type';
48

59
export class LeaderboardService {
610
constructor(private leaderboardRepo: LeaderboardRepository) {}
@@ -23,32 +27,58 @@ export class LeaderboardService {
2327
}
2428

2529
private mapRawResultToLeaderboardResponseData(rawResult: unknown[], type: string): LeaderboardResponseData {
26-
const result = { posts: null, users: null };
30+
const result: LeaderboardResponseData = { posts: null, users: null };
2731

2832
if (type === 'post') {
29-
result.posts = rawResult.map((post) => ({
30-
id: post.id,
31-
title: post.title,
32-
slug: post.slug,
33-
totalViews: post.total_views,
34-
totalLikes: post.total_likes,
35-
viewDiff: post.view_diff,
36-
likeDiff: post.like_diff,
37-
releasedAt: post.released_at,
38-
}));
33+
result.posts = (rawResult as RawPostResult[]).map(
34+
(post): LeaderboardPostType => ({
35+
id: post.id,
36+
title: post.title,
37+
slug: post.slug,
38+
totalViews: post.total_views,
39+
totalLikes: post.total_likes,
40+
viewDiff: post.view_diff,
41+
likeDiff: post.like_diff,
42+
releasedAt: post.released_at,
43+
}),
44+
);
3945
} else {
40-
result.users = rawResult.map((user) => ({
41-
id: user.id,
42-
email: user.email,
43-
totalViews: user.total_views,
44-
totalLikes: user.total_likes,
45-
totalPosts: user.total_posts,
46-
viewDiff: user.view_diff,
47-
likeDiff: user.like_diff,
48-
postDiff: user.post_diff,
49-
}));
46+
result.users = (rawResult as RawUserResult[]).map(
47+
(user): LeaderboardUserType => ({
48+
id: user.id,
49+
email: user.email,
50+
totalViews: user.total_views,
51+
totalLikes: user.total_likes,
52+
totalPosts: user.total_posts,
53+
viewDiff: user.view_diff,
54+
likeDiff: user.like_diff,
55+
postDiff: user.post_diff,
56+
}),
57+
);
5058
}
5159

5260
return result;
5361
}
5462
}
63+
64+
interface RawPostResult {
65+
id: number;
66+
title: string;
67+
slug: string;
68+
total_views: number;
69+
total_likes: number;
70+
view_diff: number;
71+
like_diff: number;
72+
released_at: string;
73+
}
74+
75+
interface RawUserResult {
76+
id: number;
77+
email: string;
78+
total_views: number;
79+
total_likes: number;
80+
total_posts: number;
81+
view_diff: number;
82+
like_diff: number;
83+
post_diff: number;
84+
}

0 commit comments

Comments
 (0)