Skip to content

Commit 678e989

Browse files
committed
fix: lint 오류 수정 및 응답 형식 통일
1 parent 764ec4b commit 678e989

File tree

4 files changed

+23
-19
lines changed

4 files changed

+23
-19
lines changed

src/controllers/svg.controller.ts

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,26 @@
1-
import { NextFunction, Request, RequestHandler, Response } from "express";
1+
import { NextFunction, RequestHandler, Request, Response } from "express";
22
import logger from '@/configs/logger.config'
3-
import { GetSvgBadgeParams, GetSvgBadgeQuery } from "@/types";
3+
import { GetSvgBadgeQuery, BadgeDataResponseDto } from "@/types";
44
import { SvgService } from '@/services/svg.service';
55

66
export class SvgController {
77
constructor(private svgService: SvgService) {}
88

9-
getSvgBadge: RequestHandler<GetSvgBadgeParams, any, any, GetSvgBadgeQuery> = async (
10-
req: Request<GetSvgBadgeParams, object, object, GetSvgBadgeQuery>,
11-
res: Response,
9+
getSvgBadge: RequestHandler<{ username: string }, BadgeDataResponseDto, object, GetSvgBadgeQuery> = async (
10+
req: Request<{ username: string }, BadgeDataResponseDto, object, GetSvgBadgeQuery>,
11+
res: Response<BadgeDataResponseDto>,
1212
next: NextFunction,
1313
) => {
1414
try {
1515
const { username } = req.params;
1616
const { type = 'default'} = req.query;
1717

1818
const data = await this.svgService.getBadgeData(username, type);
19+
const response = new BadgeDataResponseDto(true, '배지 데이터 조회에 성공하였습니다.', data, null);
1920

20-
res.json(data);
21+
res.status(200).json(response);
2122
} catch (error) {
22-
logger.error('SVG Badge 생성 실패: ', error);
23+
logger.error('SVG Badge 조회 실패:', error);
2324
next(error);
2425
}
2526
}

src/services/svg.service.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import logger from '@/configs/logger.config';
2-
import { BadgeDataResponseDto, SvgBadgeType } from '@/types';
2+
import { SvgBadgeType, BadgeData } from '@/types';
33
import { LeaderboardRepository } from '@/repositories/leaderboard.repository';
44

55
export class SvgService {
@@ -9,15 +9,15 @@ export class SvgService {
99
username: string,
1010
type: SvgBadgeType,
1111
dateRange: number = 30,
12-
): Promise<BadgeDataResponseDto> {
12+
): Promise<BadgeData> {
1313
try {
1414
const userStats = await this.leaderboardRepo.getUserStats(username, dateRange);
1515
const recentPosts = type === 'default'
1616
? await this.leaderboardRepo.getRecentPosts(username, dateRange, 3)
1717
: [];
1818

19-
return new BadgeDataResponseDto(
20-
{
19+
return {
20+
user: {
2121
username: userStats.username,
2222
totalViews: Number(userStats.total_views),
2323
totalLikes: Number(userStats.total_likes),
@@ -26,14 +26,14 @@ export class SvgService {
2626
likeDiff: Number(userStats.like_diff),
2727
postDiff: Number(userStats.post_diff),
2828
},
29-
recentPosts.map(post => ({
29+
recentPosts: recentPosts.map(post => ({
3030
title: post.title,
3131
releasedAt: post.released_at,
3232
viewCount: Number(post.today_view),
3333
likeCount: Number(post.today_like),
3434
viewDiff: Number(post.view_diff),
3535
}))
36-
)
36+
};
3737
} catch (error) {
3838
logger.error('SvgService getBadgeData error: ', error);
3939
throw error;

src/types/dto/responses/svgResponse.type.ts

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import { BaseResponseDto } from '@/types/dto/responses/baseResponse.type';
2+
13
export interface BadgeUserData {
24
username: string;
35
totalViews: number;
@@ -16,12 +18,13 @@ export interface BadgeRecentPost {
1618
viewDiff: number;
1719
}
1820

19-
export class BadgeDataResponseDto {
21+
export interface BadgeData {
2022
user: BadgeUserData;
2123
recentPosts: BadgeRecentPost[];
24+
}
2225

23-
constructor(user: BadgeUserData, recentPosts: BadgeRecentPost[]) {
24-
this.user = user;
25-
this.recentPosts = recentPosts;
26+
export class BadgeDataResponseDto extends BaseResponseDto<BadgeData | null> {
27+
constructor(success: boolean, message: string, data: BadgeData | null, error: string | null) {
28+
super(success, message, data, error);
2629
}
27-
}
30+
}

src/types/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ export { TotalStatsResponseDto } from '@/types/dto/responses/totalStatsResponse.
4141
// SVG 관련
4242
export type { GetSvgBadgeParams, GetSvgBadgeQuery, SvgBadgeType } from '@/types/dto/requests/svgRequest.type';
4343
export { GetSvgBadgeQueryDto } from '@/types/dto/requests/svgRequest.type';
44-
export type { BadgeUserData, BadgeRecentPost } from '@/types/dto/responses/svgResponse.type';
44+
export type { BadgeUserData, BadgeRecentPost, BadgeData } from '@/types/dto/responses/svgResponse.type';
4545
export { BadgeDataResponseDto } from '@/types/dto/responses/svgResponse.type';
4646

4747
// Sentry 관련

0 commit comments

Comments
 (0)