Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Test/#250] Article 목록조회(무한스크롤) Mock API 구현 #251

Merged
merged 13 commits into from
Jul 25, 2024

Conversation

hun-ca
Copy link
Member

@hun-ca hun-ca commented Jul 24, 2024

🎫 연관 이슈

resolved #250

💁‍♂️ PR 내용

  • 아티클 목록 조회 API명세 Mock API 구현
  • "/api/v1/articles? prevArticleId={prevArticleId}"
    • prevArticleId: 이전 스크롤(요청)에서 읽어간 마지막 아티클 ID

🙏 작업

🙈 PR 참고 사항

  • Swagger HUB를 통해 호출 가능한 Mock API 입니다

📸 스크린샷

🤖 테스트 체크리스트

  • 체크 미완료
  • 체크 완료

@hun-ca hun-ca added feature 새로운 기능을 만들 때 사용됩니다 test 테스트 관련 내용을 다룰 때 사용합니다 labels Jul 24, 2024
@hun-ca hun-ca self-assigned this Jul 24, 2024
@hun-ca hun-ca requested a review from belljun3395 as a code owner July 24, 2024 14:13
Copy link
Member Author

@hun-ca hun-ca left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

리뷰 부탁드려요

@@ -12,10 +12,16 @@ data class ReadArticleUseCaseOut(
val category: String,
val createdAt: LocalDateTime,
val views: Long,
val includedWorkbooks: List<WorkbookDetail> = emptyList(),
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

기존 아티클 단건 조회에서 사용하던 uc out 객체에서 필드 추가했습니다. 아티클 단건 조회 vs 무한 스크롤 API에서 응답 바디가 다를게 이거밖에 없더라구요... 아티클 단건 조회에선 empty로 응답되도록 기본 값을 emptyList()로 설정했습니다.

Comment on lines +37 to +52
val response = ReadArticleResponse(
id = useCaseOut.id,
title = useCaseOut.title,
writer = WriterInfo(
useCaseOut.writer.id,
useCaseOut.writer.name,
useCaseOut.writer.url
),
content = useCaseOut.content,
problemIds = useCaseOut.problemIds,
category = useCaseOut.category,
createdAt = useCaseOut.createdAt,
views = useCaseOut.views
)

return ApiResponseGenerator.success(response, HttpStatus.OK)
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

기존 아티클 단건 조회 API에서 response 객체를 보시면 uc out dto를 그대로 변환만 하고 있더라구요.. 그냥 변환만 할거면 각 레이어별 DTO를 구분한 의미가 모호해져서 일단 이렇게 컨버팅하는 코드 추가해뒀습니다.

Comment on lines +55 to +89
@GetMapping
fun readArticles(
@RequestParam(
required = false,
defaultValue = "0"
) prevArticleId: Long,
): ApiResponse<ApiResponse.SuccessBody<ReadArticlesResponse>> {
val useCaseOut = readArticlesUseCase.execute(ReadArticlesUseCaseIn(prevArticleId))

val articles: List<ReadArticleResponse> = useCaseOut.articles.map { a ->
ReadArticleResponse(
id = a.id,
title = a.title,
writer = WriterInfo(
a.writer.id,
a.writer.name,
a.writer.url
),
content = a.content,
problemIds = a.problemIds,
category = a.category,
createdAt = a.createdAt,
views = a.views,
includedWorkbooks = a.includedWorkbooks.map { w ->
WorkbookInfo(
id = w.id,
title = w.title
)
}
)
}.toList()

val response = ReadArticlesResponse(articles, articles.size != 10) // TODO refactor 'isLast'

return ApiResponseGenerator.success(response, HttpStatus.OK)
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

아티클 무한 스크롤링 컨트롤러 코드입니다. 쿼리 파람으로 prevArticleId 가 있고 이전 요청(스크롤)에서 마지막 아티클 ID를 의미합니다. 필수값은 아니며 해당 값이 오지 않을 경우 첫 번째 스크롤로 판단하려고 합니다.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

그리고 지금 당장은 해당 API에 대한 뷰가 1개 밖에 없어서 Facade UC를 둘 필요성이 있을까? 라는 생각이 있어서 일단은 추가 안했어요 (나중에 대응할 뷰가 2개 이상 생기면 필요할 듯)

@hun-ca hun-ca removed the feature 새로운 기능을 만들 때 사용됩니다 label Jul 24, 2024
@hun-ca hun-ca changed the title [Feat/#250] Article 목록조회(무한스크롤) Mock API 구현 [Test/#250] Article 목록조회(무한스크롤) Mock API 구현 Jul 24, 2024
@github-actions github-actions bot added the feature 새로운 기능을 만들 때 사용됩니다 label Jul 24, 2024
@hun-ca hun-ca removed the feature 새로운 기능을 만들 때 사용됩니다 label Jul 24, 2024
@github-actions github-actions bot added the feature 새로운 기능을 만들 때 사용됩니다 label Jul 24, 2024
@hun-ca hun-ca removed the feature 새로운 기능을 만들 때 사용됩니다 label Jul 24, 2024
@github-actions github-actions bot added the feature 새로운 기능을 만들 때 사용됩니다 label Jul 24, 2024
@hun-ca hun-ca removed the feature 새로운 기능을 만들 때 사용됩니다 label Jul 24, 2024
@github-actions github-actions bot added the feature 새로운 기능을 만들 때 사용됩니다 label Jul 24, 2024
@hun-ca hun-ca removed the feature 새로운 기능을 만들 때 사용됩니다 label Jul 24, 2024
Copy link
Collaborator

@belljun3395 belljun3395 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

수고하셨습니다! 해당 결과도 반영해서 스웨거 허브에 업데이트 할께요

@hun-ca hun-ca merged commit 13d2fb4 into main Jul 25, 2024
5 checks passed
@hun-ca hun-ca deleted the feat/#250_hunca branch July 27, 2024 10:47
@hun-ca hun-ca restored the feat/#250_hunca branch July 27, 2024 10:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
test 테스트 관련 내용을 다룰 때 사용합니다
Projects
None yet
Development

Successfully merging this pull request may close these issues.

아티클 목록조회 Mock API 추가
2 participants