diff --git a/services/front/front.go b/services/front/front.go index fdc8e71..55f8a1e 100644 --- a/services/front/front.go +++ b/services/front/front.go @@ -3,29 +3,49 @@ package frontapi import ( "context" front "crossnokaye-interview-assignment/services/front/gen/front" - genClient "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" + goa "goa.design/goa/v3/pkg" "google.golang.org/grpc" "log" ) +type itemClient struct { + getItem goa.Endpoint + createItem goa.Endpoint + updateItem goa.Endpoint + deleteItem goa.Endpoint +} + // front service example implementation. // The example methods log the requests and return zero values. type frontsrvc struct { logger *log.Logger - itemClient *genClient.Client + itemClient *itemClient } // NewFront returns the front service implementation. func NewFront(logger *log.Logger, itemClientConnection *grpc.ClientConn) front.Service { - return &frontsrvc{logger: logger, itemClient: genClient.NewClient(itemClientConnection)} + ic := genItemClient.NewClient(itemClientConnection) + return &frontsrvc{logger: logger, itemClient: &itemClient{ + ic.GetItem(), + ic.CreateItem(), + ic.UpdateItem(), + ic.DeleteItem()}} + } // GetItem implements getItem. func (s *frontsrvc) GetItem(ctx context.Context, id int) (res *front.Item, err error) { s.logger.Print("front.getItem") - s.logger.Print(s.itemClient.GetItem()) + getItemResponse, err := s.itemClient.getItem(ctx, &genItem.GetItemPayload{ID: &id}) + if err != nil { + return nil, err + } + item := getItemResponse.(*genItem.Item) + res = (*front.Item)(item) return } diff --git a/services/item/design/design.go b/services/item/design/design.go index 60a9b29..e795eeb 100644 --- a/services/item/design/design.go +++ b/services/item/design/design.go @@ -9,17 +9,19 @@ import ( var _ = API("item", func() { Title("Item Service") Server("item", func() { - Host("localhost", func() { - URI("grpc://localhost:8082") - }) - }) + Host("localhost", func() { + URI("grpc://localhost:8082") + }) + }) }) var _ = Service("item", func() { Description("A GRPC back service that handles CRUD operations for the items that exist and their attributes") Method("getItem", func() { - Payload(Int) + Payload(func() { + Field(1, "id", Int) + }) Result(Item) Error("NotFound") @@ -53,7 +55,9 @@ var _ = Service("item", func() { }) Method("deleteItem", func() { - Payload(Int) + Payload(func() { + Field(1, "id", Int) + }) Result(Empty) Error("NotFound") Error("BadRequest") @@ -64,4 +68,4 @@ var _ = Service("item", func() { Response("BadRequest", CodeInvalidArgument) }) }) -}) \ No newline at end of file +}) diff --git a/services/item/item.go b/services/item/item.go index d1178b5..14625d9 100644 --- a/services/item/item.go +++ b/services/item/item.go @@ -18,7 +18,7 @@ func NewItem(logger *log.Logger) item.Service { } // GetItem implements getItem. -func (s *itemsrvc) GetItem(ctx context.Context, p int) (res *item.Item, err error) { +func (s *itemsrvc) GetItem(ctx context.Context, p *item.GetItemPayload) (res *item.Item, err error) { res = &item.Item{} s.logger.Print("item.getItem") return @@ -39,7 +39,7 @@ func (s *itemsrvc) UpdateItem(ctx context.Context, p *item.Item) (res *item.Item } // DeleteItem implements deleteItem. -func (s *itemsrvc) DeleteItem(ctx context.Context, p int) (err error) { +func (s *itemsrvc) DeleteItem(ctx context.Context, p *item.DeleteItemPayload) (err error) { s.logger.Print("item.deleteItem") return }