diff --git a/build.gradle b/build.gradle index 4cb1340..265172f 100644 --- a/build.gradle +++ b/build.gradle @@ -14,6 +14,7 @@ repositories { dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' + implementation 'org.projectlombok:lombok:1.18.12' testImplementation('org.springframework.boot:spring-boot-starter-test') { exclude group: 'org.junit.vintage', module: 'junit-vintage-engine' } diff --git a/src/main/java/com/example/javaweb/controller/BookController.java b/src/main/java/com/example/javaweb/controller/BookController.java new file mode 100644 index 0000000..8199a9f --- /dev/null +++ b/src/main/java/com/example/javaweb/controller/BookController.java @@ -0,0 +1,35 @@ +package com.example.javaweb.controller; + +import com.example.javaweb.model.Board; +import com.example.javaweb.service.BookService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +@RestController +@RequestMapping("/api/v1/books") +public class BookController { + + @Autowired + BookService bookService; + + @GetMapping + public List readBoard() { + return bookService.selectAll(); + } + + @PostMapping + public Board createBoard(@RequestBody Board board) { + return bookService.create(board); + } + + @PutMapping("/{id}") + public Board editBoard(@PathVariable Long id, @RequestBody Board updateData) { + return bookService.update(id, updateData); + } + + @DeleteMapping("/{id}") + public void deleteBoard(@PathVariable Long id) { + bookService.delete(id); + } +} diff --git a/src/main/java/com/example/javaweb/db/Repository.java b/src/main/java/com/example/javaweb/db/Repository.java new file mode 100644 index 0000000..a4e8f4f --- /dev/null +++ b/src/main/java/com/example/javaweb/db/Repository.java @@ -0,0 +1,36 @@ +package com.example.javaweb.db; + +import com.example.javaweb.model.Board; +import org.springframework.stereotype.Component; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Component +public class Repository { + private Map map = new HashMap<>(); + private Long idCount = 1L; + + public Board save(Board board) { + map.put(idCount++, board); + return board; + } + + public Board update(Long id, Board board) { + map.put(id, board); + return board; + } + + public Board get(Long id) { + return map.get(id); + } + + public void delete(Long id) { + map.remove(id); + } + + public List getAll() { + return new ArrayList<>(map.values()); + } +} diff --git a/src/main/java/com/example/javaweb/model/Board.java b/src/main/java/com/example/javaweb/model/Board.java new file mode 100644 index 0000000..7f7eaef --- /dev/null +++ b/src/main/java/com/example/javaweb/model/Board.java @@ -0,0 +1,11 @@ +package com.example.javaweb.model; + +import lombok.Data; + +@Data +public class Board { + public Long id; + public String subject; + public String content; + public String writer; +} diff --git a/src/main/java/com/example/javaweb/service/BookService.java b/src/main/java/com/example/javaweb/service/BookService.java new file mode 100644 index 0000000..6f264e5 --- /dev/null +++ b/src/main/java/com/example/javaweb/service/BookService.java @@ -0,0 +1,35 @@ +package com.example.javaweb.service; + +import com.example.javaweb.db.Repository; +import com.example.javaweb.model.Board; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class BookService { + + @Autowired + private Repository repository; + + public Board create(Board board) { + return repository.save(board); + } + + public void delete(Long id) { + repository.delete(id); + } + + public Board update(Long id, Board updateData) { + Board updatedBoard = repository.get(id); + if (updateData.content != null) updatedBoard.content = updateData.content; + if (updateData.subject != null) updatedBoard.subject = updateData.subject; + if (updateData.writer != null) updatedBoard.writer = updateData.writer; + return repository.update(id, updatedBoard); + } + + public List selectAll() { + return repository.getAll(); + } +}