func (ms *MapStore) DeletePuppy(id int) error {
	if _, ok := ms.store[id]; !ok {
		return &puppy.Error{
			Message: fmt.Sprintf("Sorry puppy with ID %d does not exist", id),
			Code:    puppy.ErrPuppyNotFound,
		}
	}
	delete(ms.store, id)
	return nil
}
DeletePuppy lets you delete a specific puppy in MapStore
package store
import (
	"fmt"
	"github.com/anz-bank/go-course/10_rest/nickolee/pkg/puppy"
)
func NewMapStore() *MapStore {
	return &MapStore{store: make(map[int]puppy.Puppy), nextID: 0}
}
type MapStore struct {
	store  map[int]puppy.Puppy
	nextID int
}
func (ms *MapStore) incrementCounter() {
	ms.nextID++
}
func (ms *MapStore) CreatePuppy(pup *puppy.Puppy) (int, error) {
	if pup.Value < 0 {
		return 0, &puppy.Error{
			Message: "Sorry puppy value cannot be negative. The dog has to be worth something :)",
			Code:    puppy.ErrNegativePuppyID,
		}
	}
	ms.incrementCounter()
	pup.ID = ms.nextID
	ms.store[pup.ID] = *pup  
	return pup.ID, nil       
}
func (ms *MapStore) ReadPuppy(id int) (*puppy.Puppy, error) {
	if pup, ok := ms.store[id]; ok {
		return &pup, nil
	}
	return nil, &puppy.Error{
		Message: fmt.Sprintf("Sorry puppy with ID %d does not exist", id),
		Code:    puppy.ErrPuppyNotFound,
	}
}
func (ms *MapStore) UpdatePuppy(id int, pup *puppy.Puppy) error {
	if _, ok := ms.store[id]; !ok {
		return &puppy.Error{
			Message: fmt.Sprintf("Sorry puppy with ID %d does not exist", id),
			Code:    puppy.ErrPuppyNotFound,
		}
	}
	if pup.Value < 0 {
		return &puppy.Error{
			Message: "Sorry puppy value cannot be negative. The dog has to be worth something :)",
			Code:    puppy.ErrNegativePuppyID,
		}
	}
	pup.ID = id  
	ms.store[id] = *pup
	return nil
}