From 2aee975756ae708ab6ec604523959e9c06d648cf Mon Sep 17 00:00:00 2001 From: thib <thibault.capt@hes-so.ch> Date: Thu, 20 Feb 2025 18:17:02 +0100 Subject: [PATCH] (feat): finish simple backend --- .../backend/controller/TodoController.java | 31 ++++++++++++++++--- .../{entity/TodoEntity.java => Todo.java} | 16 ++++++---- .../com/hepia/backend/domain/model/Todo.java | 17 ---------- .../backend/repository/TodoRepository.java | 6 ++++ 4 files changed, 42 insertions(+), 28 deletions(-) rename todo-workspace/backend/src/main/java/com/hepia/backend/domain/{entity/TodoEntity.java => Todo.java} (68%) delete mode 100644 todo-workspace/backend/src/main/java/com/hepia/backend/domain/model/Todo.java create mode 100644 todo-workspace/backend/src/main/java/com/hepia/backend/repository/TodoRepository.java diff --git a/todo-workspace/backend/src/main/java/com/hepia/backend/controller/TodoController.java b/todo-workspace/backend/src/main/java/com/hepia/backend/controller/TodoController.java index 88d8bea..408aeea 100644 --- a/todo-workspace/backend/src/main/java/com/hepia/backend/controller/TodoController.java +++ b/todo-workspace/backend/src/main/java/com/hepia/backend/controller/TodoController.java @@ -1,17 +1,38 @@ package com.hepia.backend.controller; +import com.hepia.backend.domain.Todo; +import com.hepia.backend.repository.TodoRepository; import lombok.RequiredArgsConstructor; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +import static org.springframework.http.HttpStatus.CREATED; @RestController @RequestMapping("/todos") @RequiredArgsConstructor public class TodoController { + private final TodoRepository todoRepository; @GetMapping - public String getTodos() { - return "Hello World!"; + public ResponseEntity<List<Todo>> getAll() { + List<Todo> todos = todoRepository.findAll(); + return ResponseEntity.ok(todos); + } + + @PostMapping + public ResponseEntity<Todo> create(@RequestBody Todo todo) { + Todo saved = todoRepository.save(todo); + return ResponseEntity.status(CREATED).body(saved); + } + + @DeleteMapping("/{id}") + public ResponseEntity<Void> delete(@PathVariable Long id) { + todoRepository.deleteById(id); + return ResponseEntity.noContent().build(); } } diff --git a/todo-workspace/backend/src/main/java/com/hepia/backend/domain/entity/TodoEntity.java b/todo-workspace/backend/src/main/java/com/hepia/backend/domain/Todo.java similarity index 68% rename from todo-workspace/backend/src/main/java/com/hepia/backend/domain/entity/TodoEntity.java rename to todo-workspace/backend/src/main/java/com/hepia/backend/domain/Todo.java index c56c0c5..f720a89 100644 --- a/todo-workspace/backend/src/main/java/com/hepia/backend/domain/entity/TodoEntity.java +++ b/todo-workspace/backend/src/main/java/com/hepia/backend/domain/Todo.java @@ -1,20 +1,24 @@ -package com.hepia.backend.domain.entity; +package com.hepia.backend.domain; import jakarta.persistence.*; import lombok.*; +import org.hibernate.annotations.CreationTimestamp; @Entity -@Getter -@Setter -@Builder +@Table(name = "todos") +@Data @AllArgsConstructor @NoArgsConstructor -@Table(name = "todos") -public class TodoEntity { +@Builder +public class Todo { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; + private String name; + private boolean completed; + + @CreationTimestamp private String createdAt; } diff --git a/todo-workspace/backend/src/main/java/com/hepia/backend/domain/model/Todo.java b/todo-workspace/backend/src/main/java/com/hepia/backend/domain/model/Todo.java deleted file mode 100644 index 473b54c..0000000 --- a/todo-workspace/backend/src/main/java/com/hepia/backend/domain/model/Todo.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.hepia.backend.domain.model; - -import lombok.*; - -import java.time.LocalDateTime; - -@Getter -@Setter -@Builder -@AllArgsConstructor -@NoArgsConstructor -public class Todo { - private Long id; - private String name; - private boolean completed; - private LocalDateTime createdAt; -} diff --git a/todo-workspace/backend/src/main/java/com/hepia/backend/repository/TodoRepository.java b/todo-workspace/backend/src/main/java/com/hepia/backend/repository/TodoRepository.java new file mode 100644 index 0000000..d8779a8 --- /dev/null +++ b/todo-workspace/backend/src/main/java/com/hepia/backend/repository/TodoRepository.java @@ -0,0 +1,6 @@ +package com.hepia.backend.repository; + +import com.hepia.backend.domain.Todo; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface TodoRepository extends JpaRepository<Todo, Long> {} -- GitLab