Converting service state to pointers
This commit is contained in:
@ -11,25 +11,25 @@ import (
|
||||
// The example methods log the requests and return zero values.
|
||||
type itemsrvc struct {
|
||||
logger *log.Logger
|
||||
items map[string]*item.Item
|
||||
items *map[string]*item.Item
|
||||
}
|
||||
|
||||
// NewItem returns the item service implementation.
|
||||
func NewItem(logger *log.Logger) item.Service {
|
||||
itemsMap := make(map[string]*item.Item)
|
||||
return &itemsrvc{logger, itemsMap}
|
||||
return &itemsrvc{logger, &itemsMap}
|
||||
}
|
||||
|
||||
// GetItem implements getItem.
|
||||
func (s *itemsrvc) GetItem(ctx context.Context, p *item.GetItemPayload) (res *item.Item, err error) {
|
||||
s.logger.Print("itemToGet.getItem")
|
||||
|
||||
itemToGet := s.items[*p.Name]
|
||||
itemToGet := (*s.items)[*p.Name]
|
||||
if itemToGet == nil {
|
||||
s.logger.Printf("item with id %d not found", &p.Name)
|
||||
return nil, errors.New("item not found")
|
||||
}
|
||||
res = s.items[*p.Name]
|
||||
res = (*s.items)[*p.Name]
|
||||
|
||||
return
|
||||
}
|
||||
@ -37,10 +37,10 @@ func (s *itemsrvc) GetItem(ctx context.Context, p *item.GetItemPayload) (res *it
|
||||
func (s *itemsrvc) ListItems(ctx context.Context, payload *item.ListItemsPayload) (res []*item.Item, err error) {
|
||||
if payload.NameFilter != nil {
|
||||
for _, value := range payload.NameFilter {
|
||||
res = append(res, s.items[value])
|
||||
res = append(res, (*s.items)[value])
|
||||
}
|
||||
} else {
|
||||
for _, value := range s.items {
|
||||
for _, value := range *s.items {
|
||||
res = append(res, value)
|
||||
}
|
||||
}
|
||||
@ -53,8 +53,14 @@ func (s *itemsrvc) CreateItem(ctx context.Context, p *item.Item) (res *item.Item
|
||||
s.logger.Print("item.createItem")
|
||||
name := p.Name
|
||||
|
||||
s.items[name] = p
|
||||
res = s.items[name]
|
||||
existingItem := (*s.items)[name]
|
||||
if existingItem != nil {
|
||||
s.logger.Printf("item with name %d already exists", &p.Name)
|
||||
return nil, errors.New("item already exists")
|
||||
}
|
||||
|
||||
(*s.items)[name] = p
|
||||
res = (*s.items)[name]
|
||||
|
||||
return
|
||||
}
|
||||
@ -62,13 +68,13 @@ func (s *itemsrvc) CreateItem(ctx context.Context, p *item.Item) (res *item.Item
|
||||
// UpdateItem implements updateItem.
|
||||
func (s *itemsrvc) UpdateItem(ctx context.Context, p *item.Item) (res *item.Item, err error) {
|
||||
s.logger.Print("itemToGet.updateItem")
|
||||
itemToUpdate := s.items[p.Name]
|
||||
itemToUpdate := (*s.items)[p.Name]
|
||||
if itemToUpdate == nil {
|
||||
s.logger.Printf("item with id %d not found", &p.Name)
|
||||
return nil, errors.New("item not found")
|
||||
}
|
||||
s.items[p.Name] = p
|
||||
res = s.items[p.Name]
|
||||
(*s.items)[p.Name] = p
|
||||
res = (*s.items)[p.Name]
|
||||
|
||||
return
|
||||
}
|
||||
@ -76,13 +82,13 @@ func (s *itemsrvc) UpdateItem(ctx context.Context, p *item.Item) (res *item.Item
|
||||
// DeleteItem implements deleteItem.
|
||||
func (s *itemsrvc) DeleteItem(ctx context.Context, p *item.DeleteItemPayload) (err error) {
|
||||
s.logger.Print("item.deleteItem")
|
||||
itemToDelete := s.items[*p.Name]
|
||||
itemToDelete := (*s.items)[*p.Name]
|
||||
if itemToDelete == nil {
|
||||
s.logger.Printf("item with id %d not found", &p.Name)
|
||||
return errors.New("item not found")
|
||||
}
|
||||
|
||||
delete(s.items, *p.Name)
|
||||
delete((*s.items), *p.Name)
|
||||
|
||||
return
|
||||
}
|
||||
|
Reference in New Issue
Block a user