aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKevin J Hoerr <khoerr@ksmpartners.com>2022-01-31 14:29:56 -0500
committerKevin J Hoerr <khoerr@ksmpartners.com>2022-01-31 14:29:56 -0500
commit10d4a74fea3aaa02149c6a8725dfcac046e1893a (patch)
treecf76a7905d8b827e7f4eb7234f0fa62db560738b
parent4b367eaa8533cfea8a3df0720aac56ae0d6f20f2 (diff)
downloadpantry-10d4a74fea3aaa02149c6a8725dfcac046e1893a.tar.gz
pantry-10d4a74fea3aaa02149c6a8725dfcac046e1893a.tar.bz2
pantry-10d4a74fea3aaa02149c6a8725dfcac046e1893a.zip
Use Long's for ID; Accept JSON body
-rw-r--r--.devcontainer/devcontainer.json4
-rw-r--r--src/main/java/dev/submelon/pantry/PantryItem.java2
-rw-r--r--src/main/java/dev/submelon/pantry/PantryItemController.java28
-rw-r--r--src/main/java/dev/submelon/pantry/PantryItemRepository.java2
4 files changed, 20 insertions, 16 deletions
diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json
index ba3ebc2..cb0c829 100644
--- a/.devcontainer/devcontainer.json
+++ b/.devcontainer/devcontainer.json
@@ -1,7 +1,7 @@
// For format details, see https://aka.ms/devcontainer.json. For config options, see the README at:
// https://github.com/microsoft/vscode-dev-containers/tree/v0.209.6/containers/java
{
- "name": "Java",
+ "name": "Pantry",
"dockerComposeFile": "docker-compose.yml",
"service": "pantry",
"workspaceFolder": "/workspaces/pantry",
@@ -24,7 +24,7 @@
// "forwardPorts": [],
// Use 'postCreateCommand' to run commands after the container is created.
- "postCreateCommand": "mvn dependency:resolve",
+ "postCreateCommand": "mvn compile spring-boot:run",
// Comment out connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root.
"remoteUser": "vscode",
diff --git a/src/main/java/dev/submelon/pantry/PantryItem.java b/src/main/java/dev/submelon/pantry/PantryItem.java
index 459c3b7..97ab62d 100644
--- a/src/main/java/dev/submelon/pantry/PantryItem.java
+++ b/src/main/java/dev/submelon/pantry/PantryItem.java
@@ -17,7 +17,7 @@ import lombok.Setter;
public class PantryItem {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
- private Integer id;
+ private Long id;
@Column(nullable=false)
private String name;
diff --git a/src/main/java/dev/submelon/pantry/PantryItemController.java b/src/main/java/dev/submelon/pantry/PantryItemController.java
index 1968139..c1da12e 100644
--- a/src/main/java/dev/submelon/pantry/PantryItemController.java
+++ b/src/main/java/dev/submelon/pantry/PantryItemController.java
@@ -3,9 +3,10 @@ package dev.submelon.pantry;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
@@ -14,17 +15,20 @@ public class PantryItemController {
@Autowired
private PantryItemRepository itemRepository;
- @PostMapping(path="/add")
+ @PutMapping(path="/{id}")
@ResponseBody
- Integer addNewItem(@RequestParam String name, @RequestParam String description, @RequestParam double quantity, @RequestParam String quantityUnitType) {
- PantryItem item = new PantryItem();
- item.setName(name);
- item.setDescription(description);
- item.setQuantity(quantity);
- item.setQuantityUnitType(quantityUnitType);
-
- PantryItem updatedItem = itemRepository.save(item);
- return updatedItem.getId();
+ PantryItem addNewItem(@RequestBody PantryItem item, @PathVariable Long id) {
+ return itemRepository.findById(id)
+ .map(existingItem -> {
+ existingItem.setName(item.getName());
+ existingItem.setDescription(item.getDescription());
+ existingItem.setQuantity(item.getQuantity());
+ existingItem.setQuantityUnitType(item.getQuantityUnitType());
+ return itemRepository.save(existingItem);
+ })
+ .orElseGet(() -> {
+ return itemRepository.save(item);
+ });
}
@GetMapping(path="")
diff --git a/src/main/java/dev/submelon/pantry/PantryItemRepository.java b/src/main/java/dev/submelon/pantry/PantryItemRepository.java
index 24b4bee..947ad6b 100644
--- a/src/main/java/dev/submelon/pantry/PantryItemRepository.java
+++ b/src/main/java/dev/submelon/pantry/PantryItemRepository.java
@@ -4,7 +4,7 @@ import java.util.Optional;
import org.springframework.data.repository.CrudRepository;
-public interface PantryItemRepository extends CrudRepository<PantryItem, Integer> {
+public interface PantryItemRepository extends CrudRepository<PantryItem, Long> {
Optional<PantryItem> findByName(String name);