항해99 7기/TIL(Today I Learned)

항해99 7기 18일차 TIL[개별과제 완성]

고을마을 2022. 5. 26. 23:46

2022년 5월 26일. 항해 18일차.

주특기 입문 마지막 날.

과제를 마무리하고 서버에 배포까지 해봤다.


@RequiredArgsConstructor
@RestController
public class MemoController {

    private final MemoRepository memoRepository;
    private final MemoService memoService;

    // 게시판 글 생성
    @PostMapping("/api/memos")
    public Memo createMemo(@RequestBody MemoRequestDto requestDto) {
        Memo memo = new Memo(requestDto);
        return memoRepository.save(memo);
    }

    // 게시판 전체 조회
    @GetMapping("/api/memos")
    public List<Memo> getMemos() {
        return memoRepository.findAllByOrderByCreatedAtDesc();
    }


    // 게시판 특정 조회
    @GetMapping("/api/memos/{id}")
    public Memo getMemos(@PathVariable Long id) {
        Memo memo =  memoRepository.findById(id).orElseThrow(
                ()->new IllegalArgumentException("아이디가 존재하지 않습니다."));
        return memo;
    }

    // 게시판 특정 글 수정
    @PutMapping("/api/memos/{id}")
    public String updateMemo(@PathVariable Long id, @RequestBody MemoRequestDto requestDto) {
        return memoService.update(id, requestDto);
    }

    // 게시판 특정 글 삭제
    @DeleteMapping("/api/memos/{id}")
    public String deleteMemo(@PathVariable Long id, @RequestBody MemoRequestDto requestDto) {
        return memoService.deleteMemo(id, requestDto);
    }
}
@RequiredArgsConstructor
@Service
public class MemoService {

    private final MemoRepository memoRepository;

    //게시판 글 수정
    @Transactional     //SQL 쿼리가 일어나야 함을 스프링에게 알려줌
    public String update(Long id, MemoRequestDto requestDto) {
        Memo memo = memoRepository.findById(id).orElseThrow(
                () -> new IllegalArgumentException("아이디가 존재하지 않습니다.")
        );
        if (memo.getPassword().equals(requestDto.getPassword())) {
            memo.update(requestDto);
            return "수정 완료";
        }else{
            return "비밀번호 불일치";
        }
    }

    //게시판 글 삭제
    @Transactional      //SQL 쿼리가 일어나야 함을 스프링에게 알려줌
    public String deleteMemo(Long id, MemoRequestDto requestDto) {
        Optional<Memo> memo = memoRepository.findById(id);
        if(memo.get().getPassword().equals(requestDto.getPassword())){
            memoRepository.deleteById(id);
            return "삭제 성공";
        }
        return "비밀번호 불일치";
    }
}

어제 TIL에 언급했던 Controller 특정 글 수정 및 삭제부분의 if문을 전부 Service 부분으로 옮겼다.

어제는 Controller부분이 굉장히 지저분했지만 오늘은 조금 깔끔해진듯 하다. 

 

http://54.180.99.78/

해당 url은 내가 만든 게시판이다.

컨셉은 우크라이나 평화기원!ㅋㅋ

백엔드를 하는 사람으로서 프론트는 제대로 신경 쓰지 못했다;;;;

 

간단한 구현 유튜브 영상도 올려본다.

https://youtu.be/i4zR-KcI5yI