WIP
This commit is contained in:
@ -3,6 +3,7 @@ package itemapi
|
||||
import (
|
||||
"context"
|
||||
item "crossnokaye-interview-assignment/services/item/gen/item"
|
||||
"errors"
|
||||
"log"
|
||||
)
|
||||
|
||||
@ -10,36 +11,74 @@ import (
|
||||
// The example methods log the requests and return zero values.
|
||||
type itemsrvc struct {
|
||||
logger *log.Logger
|
||||
items map[int]*item.Item
|
||||
}
|
||||
|
||||
// NewItem returns the item service implementation.
|
||||
func NewItem(logger *log.Logger) item.Service {
|
||||
return &itemsrvc{logger}
|
||||
itemsMap := make(map[int]*item.Item)
|
||||
return &itemsrvc{logger, itemsMap}
|
||||
}
|
||||
|
||||
// GetItem implements getItem.
|
||||
func (s *itemsrvc) GetItem(ctx context.Context, p *item.GetItemPayload) (res *item.Item, err error) {
|
||||
res = &item.Item{}
|
||||
s.logger.Print("item.getItem")
|
||||
s.logger.Print("itemToGet.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
|
||||
}
|
||||
|
||||
// CreateItem implements createItem.
|
||||
func (s *itemsrvc) CreateItem(ctx context.Context, p *item.Item) (res *item.Item, err error) {
|
||||
res = &item.Item{}
|
||||
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
|
||||
}
|
||||
|
||||
// UpdateItem implements updateItem.
|
||||
func (s *itemsrvc) UpdateItem(ctx context.Context, p *item.Item) (res *item.Item, err error) {
|
||||
res = &item.Item{}
|
||||
s.logger.Print("item.updateItem")
|
||||
s.logger.Print("itemToGet.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
|
||||
}
|
||||
|
||||
// DeleteItem implements deleteItem.
|
||||
func (s *itemsrvc) DeleteItem(ctx context.Context, p *item.DeleteItemPayload) (err error) {
|
||||
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
|
||||
}
|
||||
|
Reference in New Issue
Block a user