부트캠프 일지

부트캠프 40일차 후기

여름하인 2024. 1. 23. 21:08

오늘 CodeKata는 3문제를 풀었다. 사실 4문제까지 풀 수 있었는데, 4번째 문제가 생각보다 복잡한 것 같아서 4번째 문제에서 멈추고 내일로 미뤘다.

 

이어서 프로젝트의 User을 구현하였다. 이전 프로젝트에 했던 내용을 변형하는 것이라서 어려운 것은 없었다. 구현을 하며, Spring Security를 적용했는데, 코드를 한 줄 한 줄 적으며, Spring Security 내용을 곱씹어 보는 시간을 가졌다.

 

이전 내용의 반복이라서 구현을 하는데 큰 어려움은 없었지만, 기억에 남는 오류가 하나 있다.

비밀번호 기록을 저장해서, 최근 3번의 비밀번호가 중복되는 지 확인하는 코드인데, 나는 처음엔 JPQL을 활용해서 충분히 구현해 볼 수 있다고 생각을 했다. 하지만, 아무리 구현을 해봐도 내가 원하는 결과가 나오지 않아서, 결국엔 QueryDSL을 활용하기에 이른다.

 

override fun getPasswordHistory(userId: Long): List<String> {
    return queryFactory.selectFrom(passwordHistory)
        .where(passwordHistory.user.id.eq(userId))
        .offset(0)
        .limit(3)
        .orderBy(passwordHistory.createdAt.desc())
        .fetch()
        .map { it.password }
}

중간에 passwordHistory user의 id가 아니라 passwordHistory id를 사용하는 바보같은 짓 때문에 삽질을 하였지만, 어떻게든 User Domain을 구현하고, Pull Request까지 하는데에 성공을 하였다.

 

아쉬운 점은 인가 기능이 제대로 작동하지 않는다는 것이다. 그래서 내일은 인가 기능을 손보고, 장바구니 기능을 추가할 예정이다. 글은 짧지만, 하루종일 컴퓨터에 앉아서 복사가 아닌 구현에 몰두하는 시간이 되었다.