Skip to content

Commit fd60e9e

Browse files
committed
Refactored to reduce boilerplate and make single Impl
1 parent 5accad6 commit fd60e9e

39 files changed

+640
-1245
lines changed
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
package com.amido.stacks.workloads.menu.api.v1;
2+
3+
import static org.springframework.http.HttpStatus.OK;
4+
5+
import com.amido.stacks.core.api.annotations.CreateAPIResponses;
6+
import com.amido.stacks.core.api.annotations.DeleteAPIResponses;
7+
import com.amido.stacks.core.api.annotations.UpdateAPIResponses;
8+
import com.amido.stacks.core.api.dto.response.ResourceCreatedResponse;
9+
import com.amido.stacks.core.api.dto.response.ResourceUpdatedResponse;
10+
import com.amido.stacks.workloads.menu.api.v1.dto.request.CreateCategoryRequest;
11+
import com.amido.stacks.workloads.menu.api.v1.dto.request.UpdateCategoryRequest;
12+
import io.swagger.v3.oas.annotations.Operation;
13+
import io.swagger.v3.oas.annotations.Parameter;
14+
import java.util.UUID;
15+
import javax.validation.Valid;
16+
import org.springframework.http.HttpStatus;
17+
import org.springframework.http.MediaType;
18+
import org.springframework.http.ResponseEntity;
19+
import org.springframework.web.bind.annotation.DeleteMapping;
20+
import org.springframework.web.bind.annotation.PathVariable;
21+
import org.springframework.web.bind.annotation.PostMapping;
22+
import org.springframework.web.bind.annotation.PutMapping;
23+
import org.springframework.web.bind.annotation.RequestAttribute;
24+
import org.springframework.web.bind.annotation.RequestBody;
25+
import org.springframework.web.bind.annotation.RequestMapping;
26+
import org.springframework.web.bind.annotation.RestController;
27+
28+
@RequestMapping(
29+
path = "/v1/menu/{id}/category",
30+
produces = MediaType.APPLICATION_JSON_VALUE + "; charset=utf-8")
31+
@RestController
32+
public class CategoryController {
33+
34+
@PostMapping
35+
@Operation(
36+
tags = "Category",
37+
summary = "Create a category in the menu",
38+
description = "Adds a category to menu",
39+
operationId = "AddMenuCategory")
40+
@CreateAPIResponses
41+
ResponseEntity<ResourceCreatedResponse> addMenuCategory(
42+
@Parameter(description = "Menu id", required = true) @PathVariable("id") UUID menuId,
43+
@Valid @RequestBody CreateCategoryRequest body,
44+
@Parameter(hidden = true) @RequestAttribute("CorrelationId") String correlationId) {
45+
46+
return new ResponseEntity<>(new ResourceCreatedResponse(UUID.randomUUID()), HttpStatus.CREATED);
47+
}
48+
49+
@PutMapping("/{categoryId}")
50+
@Operation(
51+
tags = "Category",
52+
summary = "Update a category in the menu",
53+
description = "Update a category to menu",
54+
operationId = "UpdateMenuCategory")
55+
@UpdateAPIResponses
56+
ResponseEntity<ResourceUpdatedResponse> updateMenuCategory(
57+
@Parameter(description = "Menu id", required = true) @PathVariable("id") UUID menuId,
58+
@Parameter(description = "Category id", required = true) @PathVariable("categoryId")
59+
UUID categoryId,
60+
@Valid @RequestBody UpdateCategoryRequest body,
61+
@Parameter(hidden = true) @RequestAttribute("CorrelationId") String correlationId) {
62+
63+
return new ResponseEntity<>(new ResourceUpdatedResponse(UUID.randomUUID()), OK);
64+
}
65+
66+
@DeleteMapping("/{categoryId}")
67+
@Operation(
68+
tags = "Category",
69+
summary = "Removes a category and its items from menu",
70+
description = "Removes a category and its items from menu",
71+
operationId = "DeleteCategory")
72+
@DeleteAPIResponses
73+
ResponseEntity<Void> deleteCategory(
74+
@Parameter(description = "Menu id", required = true) @PathVariable("id") UUID menuId,
75+
@Parameter(description = "Category id", required = true) @PathVariable("categoryId")
76+
UUID categoryId,
77+
@Parameter(hidden = true) @RequestAttribute("CorrelationId") String correlationId) {
78+
79+
return new ResponseEntity<>(OK);
80+
}
81+
}

java/src/main/java/com/amido/stacks/workloads/menu/api/v1/CreateCategoryController.java

Lines changed: 0 additions & 37 deletions
This file was deleted.

java/src/main/java/com/amido/stacks/workloads/menu/api/v1/CreateItemController.java

Lines changed: 0 additions & 39 deletions
This file was deleted.

java/src/main/java/com/amido/stacks/workloads/menu/api/v1/CreateMenuController.java

Lines changed: 0 additions & 34 deletions
This file was deleted.

java/src/main/java/com/amido/stacks/workloads/menu/api/v1/DeleteCategoryController.java

Lines changed: 0 additions & 33 deletions
This file was deleted.

java/src/main/java/com/amido/stacks/workloads/menu/api/v1/DeleteItemController.java

Lines changed: 0 additions & 34 deletions
This file was deleted.

java/src/main/java/com/amido/stacks/workloads/menu/api/v1/DeleteMenuController.java

Lines changed: 0 additions & 31 deletions
This file was deleted.
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
package com.amido.stacks.workloads.menu.api.v1;
2+
3+
import static org.springframework.http.HttpStatus.OK;
4+
5+
import com.amido.stacks.core.api.annotations.CreateAPIResponses;
6+
import com.amido.stacks.core.api.annotations.DeleteAPIResponses;
7+
import com.amido.stacks.core.api.annotations.UpdateAPIResponses;
8+
import com.amido.stacks.core.api.dto.response.ResourceCreatedResponse;
9+
import com.amido.stacks.core.api.dto.response.ResourceUpdatedResponse;
10+
import com.amido.stacks.workloads.menu.api.v1.dto.request.CreateItemRequest;
11+
import com.amido.stacks.workloads.menu.api.v1.dto.request.UpdateItemRequest;
12+
import io.swagger.v3.oas.annotations.Operation;
13+
import io.swagger.v3.oas.annotations.Parameter;
14+
import java.util.UUID;
15+
import javax.validation.Valid;
16+
import org.springframework.http.HttpStatus;
17+
import org.springframework.http.MediaType;
18+
import org.springframework.http.ResponseEntity;
19+
import org.springframework.web.bind.annotation.DeleteMapping;
20+
import org.springframework.web.bind.annotation.PathVariable;
21+
import org.springframework.web.bind.annotation.PostMapping;
22+
import org.springframework.web.bind.annotation.PutMapping;
23+
import org.springframework.web.bind.annotation.RequestAttribute;
24+
import org.springframework.web.bind.annotation.RequestBody;
25+
import org.springframework.web.bind.annotation.RequestMapping;
26+
import org.springframework.web.bind.annotation.RestController;
27+
28+
@RequestMapping(
29+
path = "/v1/menu/{id}/category/{categoryId}/items",
30+
produces = MediaType.APPLICATION_JSON_VALUE + "; charset=utf-8")
31+
@RestController
32+
public class ItemController {
33+
34+
@PostMapping
35+
@Operation(
36+
tags = "Item",
37+
summary = "Add an item to an existing category in a menu",
38+
description = "Adds a menu item",
39+
operationId = "AddMenuItem")
40+
@CreateAPIResponses
41+
ResponseEntity<ResourceCreatedResponse> addMenuItem(
42+
@Parameter(description = "Menu id", required = true) @PathVariable("id") UUID menuId,
43+
@Parameter(description = "Category id", required = true) @PathVariable("categoryId")
44+
UUID categoryId,
45+
@Valid @RequestBody CreateItemRequest body,
46+
@Parameter(hidden = true) @RequestAttribute("CorrelationId") String correlationId) {
47+
48+
return new ResponseEntity<>(new ResourceCreatedResponse(UUID.randomUUID()), HttpStatus.CREATED);
49+
}
50+
51+
@PutMapping("/{itemId}")
52+
@Operation(
53+
tags = "Item",
54+
summary = "Update an item in the menu",
55+
description = "Update an item in the menu",
56+
operationId = "UpdateMenuItem")
57+
@UpdateAPIResponses
58+
ResponseEntity<ResourceUpdatedResponse> updateItem(
59+
@Parameter(description = "Menu id", required = true) @PathVariable("id") UUID menuId,
60+
@Parameter(description = "Category id", required = true) @PathVariable("categoryId")
61+
UUID categoryId,
62+
@Parameter(description = "Item id", required = true) @PathVariable("itemId") UUID itemId,
63+
@Valid @RequestBody UpdateItemRequest body,
64+
@Parameter(hidden = true) @RequestAttribute("CorrelationId") String correlationId) {
65+
66+
return new ResponseEntity<>(new ResourceUpdatedResponse(UUID.randomUUID()), HttpStatus.OK);
67+
}
68+
69+
@DeleteMapping("/{itemId}")
70+
@Operation(
71+
tags = "Item",
72+
summary = "Removes an item from menu",
73+
description = "Removes an item from menu",
74+
operationId = "DeleteMenuItem")
75+
@DeleteAPIResponses
76+
ResponseEntity<Void> deleteItem(
77+
@Parameter(description = "Menu id", required = true) @PathVariable("id") UUID menuId,
78+
@Parameter(description = "Category id", required = true) @PathVariable("categoryId")
79+
UUID categoryId,
80+
@Parameter(description = "Item id", required = true) @PathVariable("itemId") UUID itemId,
81+
@Parameter(hidden = true) @RequestAttribute("CorrelationId") String correlationId) {
82+
83+
return new ResponseEntity<>(OK);
84+
}
85+
}

0 commit comments

Comments
 (0)