|
|
@ -9,6 +9,7 @@ import (
|
|
|
|
genInventory "crossnokaye-interview-assignment/services/inventory/gen/inventory"
|
|
|
|
genInventory "crossnokaye-interview-assignment/services/inventory/gen/inventory"
|
|
|
|
genItemClient "crossnokaye-interview-assignment/services/item/gen/grpc/item/client"
|
|
|
|
genItemClient "crossnokaye-interview-assignment/services/item/gen/grpc/item/client"
|
|
|
|
genItem "crossnokaye-interview-assignment/services/item/gen/item"
|
|
|
|
genItem "crossnokaye-interview-assignment/services/item/gen/item"
|
|
|
|
|
|
|
|
"errors"
|
|
|
|
"github.com/golang/protobuf/ptypes/empty"
|
|
|
|
"github.com/golang/protobuf/ptypes/empty"
|
|
|
|
goa "goa.design/goa/v3/pkg"
|
|
|
|
goa "goa.design/goa/v3/pkg"
|
|
|
|
"google.golang.org/grpc"
|
|
|
|
"google.golang.org/grpc"
|
|
|
@ -88,7 +89,7 @@ func (s *frontsrvc) GetItem(ctx context.Context, name string) (res *front.Item,
|
|
|
|
|
|
|
|
|
|
|
|
func (s *frontsrvc) ListItems(ctx context.Context) (res []*front.Item, err error) {
|
|
|
|
func (s *frontsrvc) ListItems(ctx context.Context) (res []*front.Item, err error) {
|
|
|
|
s.logger.Print("front.listItems")
|
|
|
|
s.logger.Print("front.listItems")
|
|
|
|
listItemsResponse, err := s.itemClient.listItems(ctx, empty.Empty{})
|
|
|
|
listItemsResponse, err := s.itemClient.listItems(ctx, &genItem.ListItemsPayload{})
|
|
|
|
if err != nil {
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -205,6 +206,12 @@ func (s *frontsrvc) DeleteCharacter(ctx context.Context, name string) (err error
|
|
|
|
// AddItemToInventory implements addItemToInventory.
|
|
|
|
// AddItemToInventory implements addItemToInventory.
|
|
|
|
func (s *frontsrvc) AddItemToInventory(ctx context.Context, p *front.InventoryRecord) (err error) {
|
|
|
|
func (s *frontsrvc) AddItemToInventory(ctx context.Context, p *front.InventoryRecord) (err error) {
|
|
|
|
s.logger.Print("front.addItemToInventory")
|
|
|
|
s.logger.Print("front.addItemToInventory")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
err = s.checkItemAndCharacter(ctx, p)
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
|
|
|
|
return err
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
_, err = s.inventoryClient.addItem(ctx, (*genInventory.InventoryRecord)(p))
|
|
|
|
_, err = s.inventoryClient.addItem(ctx, (*genInventory.InventoryRecord)(p))
|
|
|
|
if err != nil {
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
return err
|
|
|
@ -216,6 +223,12 @@ func (s *frontsrvc) AddItemToInventory(ctx context.Context, p *front.InventoryRe
|
|
|
|
// RemoveItemFromInventory implements removeItemFromInventory.
|
|
|
|
// RemoveItemFromInventory implements removeItemFromInventory.
|
|
|
|
func (s *frontsrvc) RemoveItemFromInventory(ctx context.Context, p *front.InventoryRecord) (err error) {
|
|
|
|
func (s *frontsrvc) RemoveItemFromInventory(ctx context.Context, p *front.InventoryRecord) (err error) {
|
|
|
|
s.logger.Print("front.removeItemFromInventory")
|
|
|
|
s.logger.Print("front.removeItemFromInventory")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
err = s.checkItemAndCharacter(ctx, p)
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
|
|
|
|
return err
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
_, err = s.inventoryClient.removeItem(ctx, (*genInventory.InventoryRecord)(p))
|
|
|
|
_, err = s.inventoryClient.removeItem(ctx, (*genInventory.InventoryRecord)(p))
|
|
|
|
if err != nil {
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
return err
|
|
|
@ -225,15 +238,47 @@ func (s *frontsrvc) RemoveItemFromInventory(ctx context.Context, p *front.Invent
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (s *frontsrvc) ListInventoryItems(ctx context.Context, payload *front.ListInventoryItemsPayload) (res []*front.Item, err error) {
|
|
|
|
func (s *frontsrvc) ListInventoryItems(ctx context.Context, payload *front.ListInventoryItemsPayload) (res []*front.Item, err error) {
|
|
|
|
//listInventoryResponse, err := s.inventoryClient.listInventoryItems(ctx,
|
|
|
|
listInventoryResponse, err := s.inventoryClient.listInventoryItems(ctx,
|
|
|
|
// &genInventory.ListInventoryPayload{CharacterID: payload.CharacterID})
|
|
|
|
&genInventory.ListInventoryPayload{CharacterName: payload.CharacterName})
|
|
|
|
//if err != nil {
|
|
|
|
if err != nil {
|
|
|
|
// return nil, err
|
|
|
|
return nil, err
|
|
|
|
//}
|
|
|
|
}
|
|
|
|
//
|
|
|
|
|
|
|
|
//itemIds := listInventoryResponse.([]*int)
|
|
|
|
itemNames := listInventoryResponse.([]string)
|
|
|
|
//for _, itemToReturn := range itemIds {
|
|
|
|
if itemNames == nil {
|
|
|
|
// res = append(frontCharacters, (*front.Character)(itemToReturn))
|
|
|
|
return
|
|
|
|
//}
|
|
|
|
}
|
|
|
|
|
|
|
|
itemResponse, err := s.itemClient.listItems(ctx, &genItem.ListItemsPayload{NameFilter: itemNames})
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
|
|
|
|
return nil, err
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
items := itemResponse.([]*genItem.Item)
|
|
|
|
|
|
|
|
for _, value := range items {
|
|
|
|
|
|
|
|
res = append(res, (*front.Item)(value))
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
func (s *frontsrvc) checkItemAndCharacter(ctx context.Context, payload *front.InventoryRecord) (err error) {
|
|
|
|
|
|
|
|
getItemResponse, err := s.itemClient.getItem(ctx, &genItem.GetItemPayload{Name: &payload.ItemName})
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
|
|
|
|
return err
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if getItemResponse.(*genItem.Item) == nil {
|
|
|
|
|
|
|
|
return errors.New("item not found")
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
getCharacterResponse, err := s.characterClient.getCharacter(ctx,
|
|
|
|
|
|
|
|
&genCharacter.GetCharacterPayload{Name: &payload.CharacterName})
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
|
|
|
|
return err
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if getCharacterResponse.(*genCharacter.Character) == nil {
|
|
|
|
|
|
|
|
return errors.New("character not found")
|
|
|
|
|
|
|
|
}
|
|
|
|
return
|
|
|
|
return
|
|
|
|
}
|
|
|
|
}
|
|
|
|