WIP
This commit is contained in:
@ -1,62 +0,0 @@
|
|||||||
package item
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
|
|
||||||
"github.com/golang/protobuf/ptypes/empty"
|
|
||||||
goa "goa.design/goa/v3/pkg"
|
|
||||||
"google.golang.org/grpc"
|
|
||||||
"google.golang.org/protobuf/types/known/emptypb"
|
|
||||||
|
|
||||||
genClient "crossnokaye-interview-assignment/services/item/gen/grpc/item/client"
|
|
||||||
genItem "crossnokaye-interview-assignment/services/item/gen/item"
|
|
||||||
)
|
|
||||||
|
|
||||||
type (
|
|
||||||
ItemClient interface {
|
|
||||||
GetItemRequest(ctx context.Context, id int32) (*genItem.Item, error)
|
|
||||||
// listItems(ctx context.Context) (*Forecast, error)
|
|
||||||
CreateItemRequest(ctx context.Context, item genItem.Item) (*genItem.Item, error)
|
|
||||||
UpdateItemRequest(ctx context.Context, item genItem.Item) (*genItem.Item, error)
|
|
||||||
DeleteItemRequest(ctx context.Context, id int32) (*empty.Empty, error)
|
|
||||||
}
|
|
||||||
|
|
||||||
// client is the client implementation.
|
|
||||||
itemClient struct {
|
|
||||||
getItem goa.Endpoint
|
|
||||||
createItem goa.Endpoint
|
|
||||||
updateItem goa.Endpoint
|
|
||||||
deleteItem goa.Endpoint
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
// New instantiates a new forecast service client.
|
|
||||||
func New(clientConnection *grpc.ClientConn) ItemClient {
|
|
||||||
c := genClient.NewClient(clientConnection, grpc.WaitForReady(true))
|
|
||||||
return &itemClient{c.GetItem(), c.CreateItem(), c.UpdateItem(), c.DeleteItem()}
|
|
||||||
}
|
|
||||||
|
|
||||||
// createItemRequest implements ItemClient.
|
|
||||||
func (itemClient *itemClient) CreateItemRequest(ctx context.Context, item genItem.Item) (*genItem.Item, error) {
|
|
||||||
res, err := itemClient.createItem(ctx, item)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
return res.(*genItem.Item), nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// deleteItemRequest implements ItemClient.
|
|
||||||
func (itemClient *itemClient) DeleteItemRequest(ctx context.Context, id int32) (*emptypb.Empty, error) {
|
|
||||||
panic("unimplemented")
|
|
||||||
}
|
|
||||||
|
|
||||||
// getItemRequest implements ItemClient.
|
|
||||||
func (itemClient *itemClient) GetItemRequest(ctx context.Context, id int32) (*genItem.Item, error) {
|
|
||||||
panic("unimplemented")
|
|
||||||
}
|
|
||||||
|
|
||||||
// updateItemRequest implements ItemClient.
|
|
||||||
func (itemClient *itemClient) UpdateItemRequest(ctx context.Context, item genItem.Item) (*genItem.Item, error) {
|
|
||||||
panic("unimplemented")
|
|
||||||
}
|
|
@ -25,7 +25,7 @@ var _ = Service("front", func() {
|
|||||||
Error("NotFound")
|
Error("NotFound")
|
||||||
|
|
||||||
HTTP(func() {
|
HTTP(func() {
|
||||||
GET("/Item/{id}")
|
GET("/item/{id}")
|
||||||
Response(StatusOK)
|
Response(StatusOK)
|
||||||
Response(StatusBadRequest)
|
Response(StatusBadRequest)
|
||||||
Response(StatusNotFound)
|
Response(StatusNotFound)
|
||||||
@ -41,8 +41,7 @@ var _ = Service("front", func() {
|
|||||||
Error("BadRequest")
|
Error("BadRequest")
|
||||||
|
|
||||||
HTTP(func() {
|
HTTP(func() {
|
||||||
POST("/Item")
|
POST("/item")
|
||||||
Body(Item)
|
|
||||||
Response(StatusOK)
|
Response(StatusOK)
|
||||||
Response(StatusBadRequest)
|
Response(StatusBadRequest)
|
||||||
})
|
})
|
||||||
@ -55,8 +54,7 @@ var _ = Service("front", func() {
|
|||||||
Error("BadRequest")
|
Error("BadRequest")
|
||||||
|
|
||||||
HTTP(func() {
|
HTTP(func() {
|
||||||
PUT("/Item/{id}")
|
PUT("/item/{id}")
|
||||||
Body(Item)
|
|
||||||
Response(StatusOK)
|
Response(StatusOK)
|
||||||
Response(StatusBadRequest)
|
Response(StatusBadRequest)
|
||||||
Response(StatusNotFound)
|
Response(StatusNotFound)
|
||||||
@ -70,7 +68,7 @@ var _ = Service("front", func() {
|
|||||||
Error("BadRequest")
|
Error("BadRequest")
|
||||||
|
|
||||||
HTTP(func() {
|
HTTP(func() {
|
||||||
POST("/Item/{id}")
|
POST("/item/{id}")
|
||||||
Response(StatusOK)
|
Response(StatusOK)
|
||||||
Response(StatusBadRequest)
|
Response(StatusBadRequest)
|
||||||
Response(StatusNotFound)
|
Response(StatusNotFound)
|
||||||
@ -84,7 +82,7 @@ var _ = Service("front", func() {
|
|||||||
Error("BadRequest")
|
Error("BadRequest")
|
||||||
|
|
||||||
HTTP(func() {
|
HTTP(func() {
|
||||||
GET("/Character/{id}")
|
GET("/character/{id}")
|
||||||
Response(StatusOK)
|
Response(StatusOK)
|
||||||
Response(StatusBadRequest)
|
Response(StatusBadRequest)
|
||||||
Response(StatusNotFound)
|
Response(StatusNotFound)
|
||||||
@ -101,7 +99,7 @@ var _ = Service("front", func() {
|
|||||||
Error("NotFound")
|
Error("NotFound")
|
||||||
|
|
||||||
HTTP(func() {
|
HTTP(func() {
|
||||||
POST("/Character")
|
POST("/character")
|
||||||
Body(Character)
|
Body(Character)
|
||||||
Response(StatusBadRequest)
|
Response(StatusBadRequest)
|
||||||
Response(StatusOK)
|
Response(StatusOK)
|
||||||
@ -116,7 +114,7 @@ var _ = Service("front", func() {
|
|||||||
Error("BadRequest")
|
Error("BadRequest")
|
||||||
|
|
||||||
HTTP(func() {
|
HTTP(func() {
|
||||||
PUT("/Character/{id}")
|
PUT("/character/{id}")
|
||||||
Body(Character)
|
Body(Character)
|
||||||
Response(StatusOK)
|
Response(StatusOK)
|
||||||
Response(StatusBadRequest)
|
Response(StatusBadRequest)
|
||||||
@ -131,7 +129,7 @@ var _ = Service("front", func() {
|
|||||||
Error("BadRequest")
|
Error("BadRequest")
|
||||||
|
|
||||||
HTTP(func() {
|
HTTP(func() {
|
||||||
POST("/Character/{id}")
|
POST("/character/{id}")
|
||||||
Response(StatusOK)
|
Response(StatusOK)
|
||||||
Response(StatusBadRequest)
|
Response(StatusBadRequest)
|
||||||
Response(StatusNotFound)
|
Response(StatusNotFound)
|
||||||
|
@ -51,21 +51,37 @@ func (s *frontsrvc) GetItem(ctx context.Context, id int) (res *front.Item, err e
|
|||||||
|
|
||||||
// CreateItem implements createItem.
|
// CreateItem implements createItem.
|
||||||
func (s *frontsrvc) CreateItem(ctx context.Context, p *front.Item) (res *front.Item, err error) {
|
func (s *frontsrvc) CreateItem(ctx context.Context, p *front.Item) (res *front.Item, err error) {
|
||||||
res = &front.Item{}
|
|
||||||
s.logger.Print("front.createItem")
|
s.logger.Print("front.createItem")
|
||||||
|
createItemResponse, err := s.itemClient.createItem(ctx, (*genItem.Item)(p))
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
item := createItemResponse.(*genItem.Item)
|
||||||
|
res = (*front.Item)(item)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// UpdateItem implements updateItem.
|
// UpdateItem implements updateItem.
|
||||||
func (s *frontsrvc) UpdateItem(ctx context.Context, p *front.Item) (res *front.Item, err error) {
|
func (s *frontsrvc) UpdateItem(ctx context.Context, p *front.Item) (res *front.Item, err error) {
|
||||||
res = &front.Item{}
|
|
||||||
s.logger.Print("front.updateItem")
|
s.logger.Print("front.updateItem")
|
||||||
|
updateItemResponse, err := s.itemClient.updateItem(ctx, (*genItem.Item)(p))
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
item := updateItemResponse.(*genItem.Item)
|
||||||
|
res = (*front.Item)(item)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeleteItem implements deleteItem.
|
// DeleteItem implements deleteItem.
|
||||||
func (s *frontsrvc) DeleteItem(ctx context.Context, p int) (err error) {
|
func (s *frontsrvc) DeleteItem(ctx context.Context, p int) (err error) {
|
||||||
s.logger.Print("front.deleteItem")
|
s.logger.Print("front.deleteItem")
|
||||||
|
_, err = s.itemClient.deleteItem(ctx, p)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3,6 +3,7 @@ package itemapi
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
item "crossnokaye-interview-assignment/services/item/gen/item"
|
item "crossnokaye-interview-assignment/services/item/gen/item"
|
||||||
|
"errors"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -10,36 +11,74 @@ import (
|
|||||||
// The example methods log the requests and return zero values.
|
// The example methods log the requests and return zero values.
|
||||||
type itemsrvc struct {
|
type itemsrvc struct {
|
||||||
logger *log.Logger
|
logger *log.Logger
|
||||||
|
items map[int]*item.Item
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewItem returns the item service implementation.
|
// NewItem returns the item service implementation.
|
||||||
func NewItem(logger *log.Logger) item.Service {
|
func NewItem(logger *log.Logger) item.Service {
|
||||||
return &itemsrvc{logger}
|
itemsMap := make(map[int]*item.Item)
|
||||||
|
return &itemsrvc{logger, itemsMap}
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetItem implements getItem.
|
// GetItem implements getItem.
|
||||||
func (s *itemsrvc) GetItem(ctx context.Context, p *item.GetItemPayload) (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("itemToGet.getItem")
|
||||||
s.logger.Print("item.getItem")
|
|
||||||
|
itemToGet := s.items[*p.ID]
|
||||||
|
if itemToGet == nil {
|
||||||
|
s.logger.Printf("itemToGet with id %d not found", p.ID)
|
||||||
|
return nil, errors.New("item not found")
|
||||||
|
}
|
||||||
|
res = s.items[*p.ID]
|
||||||
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// CreateItem implements createItem.
|
// CreateItem implements createItem.
|
||||||
func (s *itemsrvc) CreateItem(ctx context.Context, p *item.Item) (res *item.Item, err error) {
|
func (s *itemsrvc) CreateItem(ctx context.Context, p *item.Item) (res *item.Item, err error) {
|
||||||
res = &item.Item{}
|
|
||||||
s.logger.Print("item.createItem")
|
s.logger.Print("item.createItem")
|
||||||
|
id := -1
|
||||||
|
|
||||||
|
// Using this method of assigning IDs means they will
|
||||||
|
// potentially be non-sequential if ids are deleted
|
||||||
|
if p.ID != nil {
|
||||||
|
id = *p.ID
|
||||||
|
} else {
|
||||||
|
id = len(s.items)
|
||||||
|
}
|
||||||
|
|
||||||
|
p.ID = &id
|
||||||
|
|
||||||
|
s.items[id] = p
|
||||||
|
res = p
|
||||||
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// UpdateItem implements updateItem.
|
// UpdateItem implements updateItem.
|
||||||
func (s *itemsrvc) UpdateItem(ctx context.Context, p *item.Item) (res *item.Item, err error) {
|
func (s *itemsrvc) UpdateItem(ctx context.Context, p *item.Item) (res *item.Item, err error) {
|
||||||
res = &item.Item{}
|
s.logger.Print("itemToGet.updateItem")
|
||||||
s.logger.Print("item.updateItem")
|
itemToUpdate := s.items[*p.ID]
|
||||||
|
if itemToUpdate == nil {
|
||||||
|
s.logger.Printf("itemToGet with id %d not found", p.ID)
|
||||||
|
return nil, errors.New("item not found")
|
||||||
|
}
|
||||||
|
s.items[*p.ID] = p
|
||||||
|
res = itemToUpdate
|
||||||
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeleteItem implements deleteItem.
|
// DeleteItem implements deleteItem.
|
||||||
func (s *itemsrvc) DeleteItem(ctx context.Context, p *item.DeleteItemPayload) (err error) {
|
func (s *itemsrvc) DeleteItem(ctx context.Context, p *item.DeleteItemPayload) (err error) {
|
||||||
s.logger.Print("item.deleteItem")
|
s.logger.Print("item.deleteItem")
|
||||||
|
itemToDelete := s.items[*p.ID]
|
||||||
|
if itemToDelete == nil {
|
||||||
|
s.logger.Printf("itemToGet with id %d not found", p.ID)
|
||||||
|
return errors.New("item not found")
|
||||||
|
}
|
||||||
|
|
||||||
|
delete(s.items, *p.ID)
|
||||||
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user