// package mock_store -- мок-хранилище для тестов
package mock_store

import (
	"fmt"

	"git.p78su.freemyip.com/svi/gostore/pkg/types"
)

var (
	IsBad_ = false // Для тестов
)

// MockStore -- мок-хранилище для тестов
type MockStore struct {
	serv types.IService
}

// NewMockStore -- возвращает мок-хранилище для тестов
func NewMockStore(serv types.IService) (*MockStore, error) {
	if IsBad_ {
		return nil, fmt.Errorf("NewMockStore(): IsBad_==true")
	}
	if serv == nil {
		return nil, fmt.Errorf("NewMockStore(): serv==nil")
	}
	sf := &MockStore{
		serv: serv,
	}
	return sf, nil
}

func (sf *MockStore) Put(key string, val []byte) error {
	if IsBad_ {
		return fmt.Errorf("MockStore.Put(): IsBad_==true")
	}
	if key == "" {
		return fmt.Errorf("MockStore.Put(): key is empty")
	}
	return nil
}

func (sf *MockStore) Get(key string) ([]byte, error) {
	if IsBad_ {
		return nil, fmt.Errorf("MockStore.Get(): IsBad_==true")
	}
	if key == "" {
		return nil, fmt.Errorf("MockStore.Get(): key is empty")
	}
	return []byte{}, nil
}

func (sf *MockStore) Find(prefix string) ([]string, error) {
	if IsBad_ {
		return nil, fmt.Errorf("MockStore.Find(): IsBad_==true")
	}
	return []string{}, nil
}

func (sf *MockStore) Del(key string) error {
	if IsBad_ {
		return fmt.Errorf("MockStore.Del(): IsBad_==true")
	}
	return nil
}
