Skip to content

Commit

Permalink
Refactored to use Service classes
Browse files Browse the repository at this point in the history
  • Loading branch information
sdavis-amido committed Jul 19, 2022
1 parent 766d22c commit 538a7f0
Show file tree
Hide file tree
Showing 8 changed files with 192 additions and 75 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,12 @@
import com.amido.stacks.core.api.dto.response.ResourceUpdatedResponse;
import com.amido.stacks.workloads.menu.api.v1.dto.request.CreateCategoryRequest;
import com.amido.stacks.workloads.menu.api.v1.dto.request.UpdateCategoryRequest;
import com.amido.stacks.workloads.menu.service.v1.CategoryService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import java.util.UUID;
import javax.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
Expand All @@ -29,8 +31,11 @@
path = "/v1/menu/{id}/category",
produces = MediaType.APPLICATION_JSON_VALUE + "; charset=utf-8")
@RestController
@RequiredArgsConstructor
public class CategoryController {

private final CategoryService categoryService;

@PostMapping
@Operation(
tags = "Category",
Expand All @@ -43,7 +48,7 @@ ResponseEntity<ResourceCreatedResponse> createCategory(
@Valid @RequestBody CreateCategoryRequest body,
@Parameter(hidden = true) @RequestAttribute("CorrelationId") String correlationId) {

return new ResponseEntity<>(new ResourceCreatedResponse(UUID.randomUUID()), HttpStatus.CREATED);
return new ResponseEntity<>(categoryService.create(body, correlationId), HttpStatus.CREATED);
}

@PutMapping("/{categoryId}")
Expand All @@ -60,7 +65,8 @@ ResponseEntity<ResourceUpdatedResponse> updateCategory(
@Valid @RequestBody UpdateCategoryRequest body,
@Parameter(hidden = true) @RequestAttribute("CorrelationId") String correlationId) {

return new ResponseEntity<>(new ResourceUpdatedResponse(UUID.randomUUID()), OK);
return new ResponseEntity<>(
categoryService.update(menuId, categoryId, body, correlationId), OK);
}

@DeleteMapping("/{categoryId}")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,12 @@
import com.amido.stacks.core.api.dto.response.ResourceUpdatedResponse;
import com.amido.stacks.workloads.menu.api.v1.dto.request.CreateItemRequest;
import com.amido.stacks.workloads.menu.api.v1.dto.request.UpdateItemRequest;
import com.amido.stacks.workloads.menu.service.v1.ItemService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import java.util.UUID;
import javax.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
Expand All @@ -29,8 +31,11 @@
path = "/v1/menu/{id}/category/{categoryId}/items",
produces = MediaType.APPLICATION_JSON_VALUE + "; charset=utf-8")
@RestController
@RequiredArgsConstructor
public class ItemController {

private final ItemService itemService;

@PostMapping
@Operation(
tags = "Item",
Expand All @@ -45,7 +50,8 @@ ResponseEntity<ResourceCreatedResponse> createItem(
@Valid @RequestBody CreateItemRequest body,
@Parameter(hidden = true) @RequestAttribute("CorrelationId") String correlationId) {

return new ResponseEntity<>(new ResourceCreatedResponse(UUID.randomUUID()), HttpStatus.CREATED);
return new ResponseEntity<>(
itemService.create(menuId, categoryId, body, correlationId), HttpStatus.CREATED);
}

@PutMapping("/{itemId}")
Expand All @@ -63,7 +69,8 @@ ResponseEntity<ResourceUpdatedResponse> updateItem(
@Valid @RequestBody UpdateItemRequest body,
@Parameter(hidden = true) @RequestAttribute("CorrelationId") String correlationId) {

return new ResponseEntity<>(new ResourceUpdatedResponse(UUID.randomUUID()), HttpStatus.OK);
return new ResponseEntity<>(
itemService.update(menuId, categoryId, body, correlationId), HttpStatus.OK);
}

@DeleteMapping("/{itemId}")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,21 +13,15 @@
import com.amido.stacks.workloads.menu.api.v1.dto.request.UpdateMenuRequest;
import com.amido.stacks.workloads.menu.api.v1.dto.response.MenuDTO;
import com.amido.stacks.workloads.menu.api.v1.dto.response.SearchMenuResult;
import com.amido.stacks.workloads.menu.domain.Category;
import com.amido.stacks.workloads.menu.domain.Item;
import com.amido.stacks.workloads.menu.domain.Menu;
import com.amido.stacks.workloads.menu.mappers.MenuMapper;
import com.amido.stacks.workloads.menu.mappers.SearchMenuResultItemMapper;
import com.amido.stacks.workloads.menu.service.v1.MenuService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.media.Content;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import java.util.stream.Collectors;
import javax.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
Expand All @@ -44,17 +38,10 @@

@RequestMapping(path = "/v1/menu", produces = MediaType.APPLICATION_JSON_VALUE + "; charset=utf-8")
@RestController
@RequiredArgsConstructor
public class MenuController {

private final MenuMapper menuMapper;

private final SearchMenuResultItemMapper searchMenuResultItemMapper;

public MenuController(
MenuMapper menuMapper, SearchMenuResultItemMapper searchMenuResultItemMapper) {
this.menuMapper = menuMapper;
this.searchMenuResultItemMapper = searchMenuResultItemMapper;
}
private final MenuService menuService;

@PostMapping
@Operation(
Expand All @@ -67,7 +54,7 @@ ResponseEntity<ResourceCreatedResponse> createMenu(
@Valid @RequestBody CreateMenuRequest body,
@Parameter(hidden = true) @RequestAttribute("CorrelationId") String correlationId) {

return new ResponseEntity<>(new ResourceCreatedResponse(UUID.randomUUID()), HttpStatus.CREATED);
return new ResponseEntity<>(menuService.create(body, correlationId), HttpStatus.CREATED);
}

@GetMapping
Expand All @@ -91,32 +78,7 @@ ResponseEntity<SearchMenuResult> searchMenu(
@RequestParam(value = "pageNumber", required = false, defaultValue = "1")
Integer pageNumber) {

List<Menu> menuList = new ArrayList<>();

final String menuId = "d5785e28-306b-4e23-add0-3f9092d395f8";

Menu mockMenu;
if (restaurantId == null) {
mockMenu =
new Menu(
menuId,
"58a1df85-6bdc-412a-a118-0f0e394c1342",
"name",
"description",
new ArrayList<>(),
true);
} else {
mockMenu =
new Menu(menuId, restaurantId.toString(), "name", "description", new ArrayList<>(), true);
}

menuList.add(mockMenu);

return ResponseEntity.ok(
new SearchMenuResult(
pageSize,
pageNumber,
menuList.stream().map(searchMenuResultItemMapper::toDto).collect(Collectors.toList())));
return ResponseEntity.ok(menuService.search(searchTerm, restaurantId, pageSize, pageNumber));
}

@GetMapping(value = "/{id}")
Expand All @@ -137,17 +99,7 @@ ResponseEntity<MenuDTO> getMenu(
@PathVariable(name = "id") UUID id,
@Parameter(hidden = true) @RequestAttribute("CorrelationId") String correlationId) {

final String restaurantId = "58a1df85-6bdc-412a-a118-0f0e394c1342";
final String categoryId = "2c43dbda-7d4d-46fb-b246-bec2bd348ca1";
final String itemId = "7e46a698-080b-45e6-a529-2c196d00791c";

Menu menu =
new Menu(id.toString(), restaurantId, "name", "description", new ArrayList<>(), true);
Item item = new Item(itemId, "item name", "item description", 5.99d, true);
Category category = new Category(categoryId, "cat name", "cat description", List.of(item));
menu.addOrUpdateCategory(category);

return ResponseEntity.ok(menuMapper.toDto(menu));
return ResponseEntity.ok(menuService.get(id, correlationId));
}

@PutMapping(value = "/{id}")
Expand All @@ -161,7 +113,7 @@ ResponseEntity<ResourceUpdatedResponse> updateMenu(
@Valid @RequestBody UpdateMenuRequest body,
@Parameter(hidden = true) @RequestAttribute("CorrelationId") String correlationId) {

return new ResponseEntity<>(new ResourceUpdatedResponse(UUID.randomUUID()), HttpStatus.OK);
return new ResponseEntity<>(menuService.update(body, correlationId), HttpStatus.OK);
}

@DeleteMapping(value = "/{id}")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,14 @@

import com.amido.stacks.core.api.annotations.ReadAPIResponses;
import com.amido.stacks.workloads.menu.api.v1.dto.response.MenuDTO;
import com.amido.stacks.workloads.menu.domain.Menu;
import com.amido.stacks.workloads.menu.mappers.MenuMapper;
import com.amido.stacks.workloads.menu.service.v2.MenuServiceV2;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.media.Content;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import java.util.ArrayList;
import java.util.UUID;
import lombok.RequiredArgsConstructor;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
Expand All @@ -21,13 +20,10 @@

@RequestMapping(path = "/v2/menu", produces = MediaType.APPLICATION_JSON_VALUE + "; charset=utf-8")
@RestController
@RequiredArgsConstructor
public class MenuControllerV2 {

private final MenuMapper menuMapper;

public MenuControllerV2(MenuMapper menuMapper) {
this.menuMapper = menuMapper;
}
private final MenuServiceV2 menuServiceV2;

@GetMapping(value = "/{id}")
@Operation(
Expand All @@ -48,12 +44,6 @@ ResponseEntity<MenuDTO> getMenu(
@PathVariable(name = "id") UUID id,
@Parameter(hidden = true) @RequestAttribute("CorrelationId") String correlationId) {

String restaurantId = "3930ddff-82ce-4f7e-b910-b0709b276cf0";

Menu menu =
new Menu(
id.toString(), restaurantId, "0 Menu", "0 Menu Description", new ArrayList<>(), true);

return ResponseEntity.ok(menuMapper.toDto(menu));
return ResponseEntity.ok(menuServiceV2.get(id, correlationId));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package com.amido.stacks.workloads.menu.service.v1;

import com.amido.stacks.core.api.dto.response.ResourceCreatedResponse;
import com.amido.stacks.core.api.dto.response.ResourceUpdatedResponse;
import com.amido.stacks.workloads.menu.api.v1.dto.request.CreateCategoryRequest;
import com.amido.stacks.workloads.menu.api.v1.dto.request.UpdateCategoryRequest;
import java.util.UUID;
import javax.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

@Service
@RequiredArgsConstructor
public class CategoryService {

public ResourceCreatedResponse create(@Valid CreateCategoryRequest body, String correlationId) {
return new ResourceCreatedResponse(UUID.randomUUID());
}

public ResourceUpdatedResponse update(
UUID menuId, UUID categoryId, @Valid UpdateCategoryRequest body, String correlationId) {
return new ResourceUpdatedResponse(UUID.randomUUID());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package com.amido.stacks.workloads.menu.service.v1;

import com.amido.stacks.core.api.dto.response.ResourceCreatedResponse;
import com.amido.stacks.core.api.dto.response.ResourceUpdatedResponse;
import com.amido.stacks.workloads.menu.api.v1.dto.request.CreateItemRequest;
import com.amido.stacks.workloads.menu.api.v1.dto.request.UpdateItemRequest;
import java.util.UUID;
import javax.validation.Valid;
import org.springframework.stereotype.Service;

@Service
public class ItemService {

public ResourceCreatedResponse create(
UUID menuId, UUID categoryId, @Valid CreateItemRequest body, String correlationId) {
return new ResourceCreatedResponse(UUID.randomUUID());
}

public ResourceUpdatedResponse update(
UUID menuId, UUID categoryId, @Valid UpdateItemRequest body, String correlationId) {
return new ResourceUpdatedResponse(UUID.randomUUID());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
package com.amido.stacks.workloads.menu.service.v1;

import com.amido.stacks.core.api.dto.response.ResourceCreatedResponse;
import com.amido.stacks.core.api.dto.response.ResourceUpdatedResponse;
import com.amido.stacks.workloads.menu.api.v1.dto.request.CreateMenuRequest;
import com.amido.stacks.workloads.menu.api.v1.dto.request.UpdateMenuRequest;
import com.amido.stacks.workloads.menu.api.v1.dto.response.MenuDTO;
import com.amido.stacks.workloads.menu.api.v1.dto.response.SearchMenuResult;
import com.amido.stacks.workloads.menu.domain.Category;
import com.amido.stacks.workloads.menu.domain.Item;
import com.amido.stacks.workloads.menu.domain.Menu;
import com.amido.stacks.workloads.menu.mappers.MenuMapper;
import com.amido.stacks.workloads.menu.mappers.SearchMenuResultItemMapper;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import java.util.stream.Collectors;
import javax.validation.Valid;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

@Service
@RequiredArgsConstructor
public class MenuService {

@Getter private final MenuMapper menuMapper;

private final SearchMenuResultItemMapper searchMenuResultItemMapper;

public ResourceCreatedResponse create(@Valid CreateMenuRequest body, String correlationId) {

return new ResourceCreatedResponse(UUID.randomUUID());
}

public SearchMenuResult search(
String searchTerm, UUID restaurantId, Integer pageSize, Integer pageNumber) {

List<Menu> menuList = new ArrayList<>();

final String menuId = "d5785e28-306b-4e23-add0-3f9092d395f8";

Menu mockMenu;
if (restaurantId == null) {
mockMenu =
new Menu(
menuId,
"58a1df85-6bdc-412a-a118-0f0e394c1342",
"name",
"description",
new ArrayList<>(),
true);
} else {
mockMenu =
new Menu(menuId, restaurantId.toString(), "name", "description", new ArrayList<>(), true);
}

menuList.add(mockMenu);

return new SearchMenuResult(
pageSize,
pageNumber,
menuList.stream().map(searchMenuResultItemMapper::toDto).collect(Collectors.toList()));
}

public MenuDTO get(UUID id, String correlationId) {

final String restaurantId = "58a1df85-6bdc-412a-a118-0f0e394c1342";
final String categoryId = "2c43dbda-7d4d-46fb-b246-bec2bd348ca1";
final String itemId = "7e46a698-080b-45e6-a529-2c196d00791c";

Menu menu =
new Menu(id.toString(), restaurantId, "name", "description", new ArrayList<>(), true);
Item item = new Item(itemId, "item name", "item description", 5.99d, true);
Category category = new Category(categoryId, "cat name", "cat description", List.of(item));
menu.addOrUpdateCategory(category);

return menuMapper.toDto(menu);
}

public ResourceUpdatedResponse update(@Valid UpdateMenuRequest body, String correlationId) {
return new ResourceUpdatedResponse(UUID.randomUUID());
}
}
Loading

0 comments on commit 538a7f0

Please sign in to comment.