2022.11.22 TIL

SUADI·2022년 11월 22일
0

오늘의 커밋

  • 컴퍼니 페이지에서 내 게시물들에 지원한 지원자 전체 조회
  • 게시물, 프로필 update 시 리스펀스값 수정
  • A브랜치에서 작업 중 들어온 잡다한 긴급 수정 사항들
  • 해시태그 기능 추가(해시태그 엔티티 생성, 게시물에 해시태그 crud 적용 중) -> 내일 포스팅 예정

TIL 시작.

[1] companypage

{1} 기존 방식

프로젝트에서 원래 내가 생각했던 유저 플로우는 컴퍼니 페이지에 접속하면 본인이 게시한 게시글 목록을 조회할 수 있고, 조회된 게시글을 클릭하면 그 게시글에 해당하는 지원자 목록을 볼 수 있도록 하는걸 생각했고, 그렇게 구현을 했었다. 그래서 api도 내 게시글 목록 조회와 게시글에 해당하는 지원자 목록 조회 이렇게 두개로 나눠져 있었다.

{2} 새 방식

하지만 프런트엔드의 성호 님과의 회의를 통해 api를 하나로 합쳐
내 게시글 전체에 지원한 지원자 목록을 한 번에 보여주고, 게시글에 대한 정보까지 한꺼번에 리스펀스하기로 했다.

와이어 프레임을 예로 들어 설명하면, 각 카드에는 지원자 정보(username), 신청 정보(신청 pk값, 신청 승인 여부), 게시물 정보(title, contnent, area 등..)값이 포함되어 있는 형태이다. 따라서 하나 api 리스펀스 값에 세 개의 테이블 정보를 불러와야하는 형태인 것이다.

처음 이 아이디어에 대해 들은 순간, '어? 이거 내가 항상 해왔던 방식이랑 다르게 엄청 복잡하겠다.' 생각이 들었다. 근데 뭔가 재미있을 것 같다는 생각이 들어서 성호 님께 자신있게 할 수 있을 것 같다고 말씀 드렸지만 생각보다 복잡했다.

{3} 코드 리뷰

/**
 * 내 게시물 지원자 전체 조회
 */
public ResponseDto<List<EnrollDetailResponse>> getVolunteers(Member member, int page, int size) {
    // TODO : 페이징 어떻게 하지..?
    check.isAdmin(member);
    // Pageable pageable = PageRequest.of(page, size);
    List<Board> myBoards = boardRepository.findAllByMember(member);
    List<EnrollDetailResponse> enrollDetailResponses = new ArrayList<>();
    for (Board myBoard : myBoards) {
        List<Enrollment> enrollments = enrollRepository.findAllByBoard(myBoard);
        for (Enrollment enrollment : enrollments) {
            enrollDetailResponses.add(new EnrollDetailResponse(enrollment));
        }
    }
    return ResponseDto.success(enrollDetailResponses);
}    

먼저 코드 리뷰를 먼저 하자면,
관리자인지 확인 후, 관리자가 맞다면 본인이 생성한 게시물 목록을 boardRepository에서 조회해 온다. 그 다음, for 문으로 각 게시물에 해당하는 지원(enrollmentr) 목록을 조회한다.
각 지원에 대한 데이터를 enrollDetailResponse에 담아 리스펀스를 한다. 이 api를 구현하기 전에는 이중 for 문을 사용하리라고는 생각도 못했다. 분명 이 방법보다 더 좋은 방향의 코드를 작성할 수 있겠지만 일단 내가 할 수 있는 최선은 이 코드였다.

[2] git stash

{1} git stash란?

아직 마무리하지 않은 작업을 스택에 잠시 저장할 수 있도록 하는 명령어이다. 이를 통해 아직 완료하지 않은 일을 commit하지 않고 나중에 다시 꺼내와 마무리할 수 있다.

{2} 언제 사용?

A브랜치에서 작업하다가 급하게 B브랜치에서 작업해야 할때

A브랜치에서 작업하다가 B브랜치에서 다른 작업을 작업 해야하는데 깜빡하고 A브랜치에서 작업하다가 나중에 깨달았을 때

프로젝트 VONGLE에서는 api 별로 브랜치를 새로 파서 작업을 한다. 작업을 하다보면 클라이언트의 요구 사항이라던가 갑자기 할 작업이 떠오르는 등의 이유로 브랜치를 바꿔서 작업을 해야 하는 경우가 생긴다. 기존의 브랜치가 마무리가 되어가는 상황에서 브랜치를 바꾸는 경우에는 커밋을 하고 브랜치를 바꾸면 되지만 마무리가 되지 않았을 경우에는 커밋하기가 애매한데 이럴 때 git stash라는 명령어를 사용하면 좋다.

{3} git stash 사용법

git status - 현재 수정된 내용 확인

현재 수정된 내용이 있지만 마무리가 안되어서 커밋하기엔 애매한 상황이라고 가정하자.

git stash - 수정된 내용 임시 저장

git stash 명령어를 치면 working directory에 임시 저장이 되고, 수정 전 커밋 상황으로 돌아가고, git status에도 수정된 내용이 사라진다.

git stash list - 임시 저장된 내역들 조회

임시 저장된 내역을 조회할 수 있다.(연습하느라 같은 수정 사항을 두 번 저장해 버렸다.)

git switch -c 이동할 브랜치 - 다른 브랜치 파서 다른 작업
git commit -am '커밋 내용' - 다른 작업 커밋
git push origin 브랜치 - 커밋 내역 푸쉬

git switch 기존브랜치 - 기존 브랜치로 다시 이동
git stash list - 여전히 임시 저장된 내역이 있는지 확인

다른 브랜치에서 작업을 하고 기존 브랜치로 돌아왔는데도 임시 저장된 내역이 있는 것을 확인할 수 있다.

git stash apply - 최신 스태시 적용
git stash apply 내역이름 - 특정 스태시 적용

맨 처음 수정 내역이 다시 적용된 것을 확인할 수 있다.

(기존 브랜치에는 다른 브랜치에서의 수정사항이 적용이 안되었기 때문에 pull을 해서 기존 브랜치에도 적용해야 한다.)

{4} 잡다한 명령어

git stash drop 스태시이름 - 특정 스태시 제거
git stash drop - 최근 스태시 제거

아까 실수로 같은 스태시를 저장한 내역을 제거해 보았다.

git stash pop - 스태시 제거하면서 적용(apply + drop)

0개의 댓글

관련 채용 정보