aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/dev/submelon/rest/json
diff options
context:
space:
mode:
authorKevin Hoerr <kjhoerr@noreply.cybr.es>2022-08-06 01:44:00 +0000
committerKevin Hoerr <kjhoerr@noreply.cybr.es>2022-08-06 01:44:00 +0000
commit461b1fa053bcc86d06156574ab59fa7000dbf69e (patch)
tree6e0080d057b5015bd92c843481cf45575af462a8 /src/main/java/dev/submelon/rest/json
parentcdf65b32202746eaffd9e58bf951d1995ab03be3 (diff)
downloadpantry-461b1fa053bcc86d06156574ab59fa7000dbf69e.tar.gz
pantry-461b1fa053bcc86d06156574ab59fa7000dbf69e.tar.bz2
pantry-461b1fa053bcc86d06156574ab59fa7000dbf69e.zip
Quarkus (#2)
Reviewed-on: https://git.submelon.dev/kjhoerr/pantry/pulls/2
Diffstat (limited to 'src/main/java/dev/submelon/rest/json')
-rw-r--r--src/main/java/dev/submelon/rest/json/PantryItem.java29
-rw-r--r--src/main/java/dev/submelon/rest/json/PantryItemResource.java59
2 files changed, 88 insertions, 0 deletions
diff --git a/src/main/java/dev/submelon/rest/json/PantryItem.java b/src/main/java/dev/submelon/rest/json/PantryItem.java
new file mode 100644
index 0000000..d476e3c
--- /dev/null
+++ b/src/main/java/dev/submelon/rest/json/PantryItem.java
@@ -0,0 +1,29 @@
+package dev.submelon.rest.json;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Table;
+
+import io.quarkus.hibernate.orm.panache.PanacheEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+@Entity
+@Table(name = "pantryitem")
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class PantryItem extends PanacheEntity {
+
+ @Column(nullable = false)
+ private String name;
+
+ @Column
+ private String description;
+
+ @Column(nullable = false)
+ private double quantity;
+
+ @Column(nullable = false)
+ private String quantityUnitType;
+
+}
diff --git a/src/main/java/dev/submelon/rest/json/PantryItemResource.java b/src/main/java/dev/submelon/rest/json/PantryItemResource.java
new file mode 100644
index 0000000..4bb51c0
--- /dev/null
+++ b/src/main/java/dev/submelon/rest/json/PantryItemResource.java
@@ -0,0 +1,59 @@
+package dev.submelon.rest.json;
+
+import java.util.List;
+
+import javax.transaction.Transactional;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.WebApplicationException;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+@Path("/items")
+public class PantryItemResource {
+
+ @GET
+ @Produces(MediaType.APPLICATION_JSON)
+ public List<PantryItem> getItems() {
+ return PantryItem.findAll().list();
+ }
+
+ @Transactional
+ @POST
+ @Produces(MediaType.APPLICATION_JSON)
+ public PantryItem postItem(PantryItem item) {
+ PantryItem.persist(item);
+
+ return item;
+ }
+
+ @Transactional
+ @PUT
+ @Path("/{id}")
+ @Produces(MediaType.APPLICATION_JSON)
+ public PantryItem putItem(@PathParam("id") Long id, PantryItem item) {
+ if (item.id.equals(id)) {
+ PantryItem.persist(item);
+ } else {
+ throw new WebApplicationException(Response.status(400).entity("ID does not match body").build());
+ }
+
+ return item;
+ }
+
+ @Transactional
+ @DELETE
+ @Path("/{id}")
+ public void deleteItem(@PathParam("id") Long id) {
+ boolean result = PantryItem.deleteById(id);
+
+ if (!result) {
+ throw new WebApplicationException(Response.status(404).entity("Could not find item").build());
+ }
+ }
+}