Skip to content

Commit 0d41736

Browse files
authored
[feat] 챌린지 인증 피드 존재 여부 API (#192)
* #191 [feat] 챌린지 인증 피드 존재 여부 repository 메소드 구현 * #191 [feat] 챌린지 인증 피드 존재 여부 service 구현 * #191 [feat] 챌린지 인증 피드 존재 여부 response 구현 * #191 [feat] 챌린지 인증 피드 존재 여부 controller 구현 * #191 [chore] 해당 api 인증 필수로 추가
1 parent d8514eb commit 0d41736

File tree

5 files changed

+43
-0
lines changed

5 files changed

+43
-0
lines changed

src/main/kotlin/com/photi/server/api/controller/challenge/ChallengeController.kt

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -516,4 +516,21 @@ class ChallengeController(
516516

517517
return ResponseEntity.ok(StringSuccessResponse("챌린지 피드 좋아요가 취소되었습니다."))
518518
}
519+
520+
@GetMapping("/{challengeId}/feed-existence")
521+
@Operation(
522+
summary = "챌린지 인증 피드 존재 여부 조회",
523+
security = [SecurityRequirement(name = ACCESS_TOKEN_KEY)],
524+
)
525+
@ApiResponse(responseCode = "200")
526+
@ApiErrorResponses([TOKEN_UNAUTHENTICATED, TOKEN_UNAUTHORIZED, CHALLENGE_NOT_FOUND])
527+
fun findChallengeHasFeed(
528+
principal: Principal,
529+
@PathVariable @Parameter(description = "챌린지 id", example = "1") challengeId: Long,
530+
): ResponseEntity<FindChallengeHasFeedResponse> {
531+
val hasFeed = challengeService.hasFeedByChallengeId(challengeId)
532+
val response = FindChallengeHasFeedResponse.of(hasFeed)
533+
534+
return ResponseEntity.ok(response)
535+
}
519536
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package com.photi.server.api.controller.challenge.response
2+
3+
import io.swagger.v3.oas.annotations.media.Schema
4+
5+
@Schema(description = "챌린지 인증 피드 존재 여부 조회 응답 객체")
6+
data class FindChallengeHasFeedResponse(
7+
8+
@Schema(description = "인증 피드 존재 여부", example = "true")
9+
val hasFeed: Boolean,
10+
) {
11+
12+
companion object {
13+
14+
fun of(hasFeed: Boolean): FindChallengeHasFeedResponse {
15+
return FindChallengeHasFeedResponse(hasFeed)
16+
}
17+
}
18+
}

src/main/kotlin/com/photi/server/config/SecurityConfig.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ class SecurityConfig(
5454
"/api/challenges/{challengeId}/feeds/{feedId}/like",
5555
"/api/challenges/{challengeId}/feeds/{feedId}/comments",
5656
"/api/challenges/{challengeId}/feed-members",
57+
"/api/challenges/{challengeId}/feed-existence",
5758
"/api/challenges/feeds/{feedId}/comments",
5859
"/api/inquiries",
5960
"/api/reports/{targetId}"

src/main/kotlin/com/photi/server/domain/feed/FeedRepository.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,6 @@ interface FeedRepository : JpaRepository<Feed, Long>, FeedCustomRepository {
1414
): Boolean
1515

1616
fun findByIdAndChallengeMemberId(feedId: Long, challengeMemberId: Long?): Feed?
17+
18+
fun existsByChallengeId(id: Long): Boolean
1719
}

src/main/kotlin/com/photi/server/service/challenge/ChallengeService.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -367,6 +367,11 @@ class ChallengeService(
367367
feed.decreaseLikeCnt()
368368
}
369369

370+
fun hasFeedByChallengeId(challengeId: Long): Boolean {
371+
validateChallenge(challengeId)
372+
return feedRepository.existsByChallengeId(challengeId)
373+
}
374+
370375
private fun validateUser(userId: Long): User {
371376
return userRepository.find(userId) ?: throw CustomException(USER_NOT_FOUND)
372377
}

0 commit comments

Comments
 (0)