// Copyright 2023 The LevelDB-Go and Pebble Authors. All rights reserved. Use
// of this source code is governed by a BSD-style license that can be found in
// the LICENSE file.

package remote

import "github.com/pkg/errors"

// MakeSimpleFactory returns a StorageFactory implementation that produces the given
// Storage objects.
func MakeSimpleFactory(m map[Locator]Storage) StorageFactory {
	return simpleFactory(m)
}

type simpleFactory map[Locator]Storage

var _ StorageFactory = simpleFactory{}

// CreateStorage is part of the StorageFactory interface.
func (sf simpleFactory) CreateStorage(locator Locator) (Storage, error) {
	if s, ok := sf[locator]; ok {
		return s, nil
	}
	return nil, errors.Errorf("unknown locator '%s'", locator)
}