Implementing list endpoints

This commit is contained in:
Brandon Watson
2023-08-14 20:21:33 -05:00
parent 6799b59f9c
commit bdb7a39a91
8 changed files with 135 additions and 12 deletions

View File

@ -9,6 +9,7 @@ import (
genInventory "crossnokaye-interview-assignment/services/inventory/gen/inventory"
genItemClient "crossnokaye-interview-assignment/services/item/gen/grpc/item/client"
genItem "crossnokaye-interview-assignment/services/item/gen/item"
"github.com/golang/protobuf/ptypes/empty"
goa "goa.design/goa/v3/pkg"
"google.golang.org/grpc"
"log"
@ -16,6 +17,7 @@ import (
type itemClient struct {
getItem goa.Endpoint
listItems goa.Endpoint
createItem goa.Endpoint
updateItem goa.Endpoint
deleteItem goa.Endpoint
@ -23,14 +25,16 @@ type itemClient struct {
type characterClient struct {
getCharacter goa.Endpoint
listCharacters goa.Endpoint
createCharacter goa.Endpoint
updateCharacter goa.Endpoint
deleteCharacter goa.Endpoint
}
type inventoryClient struct {
addItem goa.Endpoint
removeItem goa.Endpoint
addItem goa.Endpoint
removeItem goa.Endpoint
listInventoryItems goa.Endpoint
}
// front service example implementation.
@ -53,17 +57,20 @@ func NewFront(logger *log.Logger, itemClientConnection *grpc.ClientConn, charact
return &frontsrvc{logger: logger,
itemClient: &itemClient{
ic.GetItem(),
ic.ListItems(),
ic.CreateItem(),
ic.UpdateItem(),
ic.DeleteItem()},
characterClient: &characterClient{
cc.GetCharacter(),
cc.ListCharacters(),
cc.CreateCharacter(),
cc.UpdateCharacter(),
cc.DeleteCharacter()},
inventoryClient: &inventoryClient{
icc.AddItem(),
icc.RemoveItem(),
icc.ListInventory(),
}}
}
@ -79,6 +86,21 @@ func (s *frontsrvc) GetItem(ctx context.Context, id int) (res *front.Item, err e
return
}
func (s *frontsrvc) ListItems(ctx context.Context) (res []*front.Item, err error) {
s.logger.Print("front.listItems")
listItemsResponse, err := s.itemClient.listItems(ctx, empty.Empty{})
if err != nil {
return nil, err
}
items := listItemsResponse.([]*genItem.Item)
for _, itemToReturn := range items {
res = append(res, (*front.Item)(itemToReturn))
}
return
}
// CreateItem implements createItem.
func (s *frontsrvc) CreateItem(ctx context.Context, p *front.Item) (res *front.Item, err error) {
s.logger.Print("front.createItem")
@ -127,6 +149,21 @@ func (s *frontsrvc) GetCharacter(ctx context.Context, id int) (res *front.Charac
return
}
func (s *frontsrvc) ListCharacters(ctx context.Context) (res []*front.Character, err error) {
s.logger.Print("front.listCharacters")
listCharactersResponse, err := s.characterClient.listCharacters(ctx, empty.Empty{})
if err != nil {
return nil, err
}
characters := listCharactersResponse.([]*genCharacter.Character)
for _, itemToReturn := range characters {
res = append(res, (*front.Character)(itemToReturn))
}
return
}
// CreateCharacter implements createCharacter.
func (s *frontsrvc) CreateCharacter(ctx context.Context, p *front.Character) (res *front.Character, err error) {
s.logger.Print("front.createCharacter")
@ -186,3 +223,17 @@ func (s *frontsrvc) RemoveItemFromInventory(ctx context.Context, p *front.Invent
return
}
func (s *frontsrvc) ListInventoryItems(ctx context.Context, payload *front.ListInventoryItemsPayload) (res []*front.Item, err error) {
//listInventoryResponse, err := s.inventoryClient.listInventoryItems(ctx,
// &genInventory.ListInventoryPayload{CharacterID: payload.CharacterID})
//if err != nil {
// return nil, err
//}
//
//itemIds := listInventoryResponse.([]*int)
//for _, itemToReturn := range itemIds {
// res = append(frontCharacters, (*front.Character)(itemToReturn))
//}
return
}