개발공부

메모장 만들기

pumaclass 2024. 8. 12. 21:53
package com.sparta.memo.controller;

import com.sparta.memo.dto.MemoRequestDto;
import com.sparta.memo.dto.MemoResponseDto;
import com.sparta.memo.entity.Memo;
import org.springframework.web.bind.annotation.*;

import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@RestController // @Resoponcebody가 추가 된 컨트롤러
@RequestMapping("/api") // 기본 path를 잡아준다.
public class MemoController {

    private final Map<Long, Memo> memoList = new HashMap<>(); // Map을 통해 내용을 저장한다.

    @PostMapping("/memos") // 포스트 작성
    public MemoResponseDto createMemo(@RequestBody MemoRequestDto requestDto) {
        // RequestDto -> Entity
        Memo memo = new Memo(requestDto);

        // Memo Max ID Check
        Long maxId = memoList.size() > 0 ? Collections.max(memoList.keySet()) + 1 : 1;
        memo.setId(maxId);

        // DB 저장
        memoList.put(memo.getId(), memo);

        // Entity -> ResponseDto
        MemoResponseDto memoResponseDto = new MemoResponseDto(memo);

        return memoResponseDto;
    }

    @GetMapping("/memos") // 메모 조회
    public List<MemoResponseDto> getMemos() {
        // Map To List
        List<MemoResponseDto> responseList = memoList.values().stream()
                .map(MemoResponseDto::new).toList();

        return responseList;
    }

    @PutMapping("/memos/{id}") // 메모 수정
    public Long updateMemo(@PathVariable Long id, @RequestBody MemoRequestDto requestDto) {
        // 해당 메모가 DB에 존재하는지 확인
        if(memoList.containsKey(id)) {
            // 해당 메모 가져오기
            Memo memo = memoList.get(id);

            // memo 수정
            memo.update(requestDto);
            return memo.getId();
        } else { // 오류시 thorw해준다.
            throw new IllegalArgumentException("선택한 메모는 존재하지 않습니다.");
        }
    }

    @DeleteMapping("/memos/{id}") // 메모 삭제
    public Long deleteMemo(@PathVariable Long id) {
        // 해당 메모가 DB에 존재하는지 확인
        if(memoList.containsKey(id)) {
            // 해당 메모 삭제하기
            memoList.remove(id);
            return id;
        } else {
            throw new IllegalArgumentException("선택한 메모는 존재하지 않습니다.");
        }
    }
}

 

하나하나 떼어놓고 보면 단순하고 복잡하지 않으나

처음부터 혼자 직접 만들라면 아마 못할거같다...

이외 클래스들은 이해했으나 이 부분은 너무 어렵다...

역시 보고 또 보는 방법밖에는 없는듯하다.

'개발공부' 카테고리의 다른 글

잊지말자 @RequestBody. feat.Column cannot be null  (0) 2024.08.15
클래스  (0) 2024.08.13
스프링 GetMapping  (0) 2024.08.09
[Git] 팀 프로젝트를 내 git으로 옮기기  (0) 2024.08.09
17조 KPT 작성  (0) 2024.08.08