mirror of
https://github.com/eosswedenorg/thalos
synced 2026-06-18 04:40:03 +02:00
cache: adding factory
This commit is contained in:
parent
ec40e954f2
commit
2f31eb47d4
4 changed files with 49 additions and 0 deletions
26
internal/cache/factory.go
vendored
Normal file
26
internal/cache/factory.go
vendored
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
package cache
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/karlseguin/typed"
|
||||
)
|
||||
|
||||
type Factory func(opts typed.Typed) (Store, error)
|
||||
|
||||
var factories = map[string]Factory{
|
||||
"memory": func(opts typed.Typed) (Store, error) {
|
||||
return NewMemoryStore(), nil
|
||||
},
|
||||
}
|
||||
|
||||
func RegisterFactory(driver string, factory Factory) {
|
||||
factories[driver] = factory
|
||||
}
|
||||
|
||||
func Make(driver string, opts typed.Typed) (Store, error) {
|
||||
if factory, ok := factories[driver]; ok {
|
||||
return factory(opts)
|
||||
}
|
||||
return nil, fmt.Errorf("Invalid cache storage: %s", driver)
|
||||
}
|
||||
20
internal/cache/factory_test.go
vendored
Normal file
20
internal/cache/factory_test.go
vendored
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
package cache_test
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/eosswedenorg/thalos/internal/cache"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestFactory_Make(t *testing.T) {
|
||||
store, err := cache.Make("memory", map[string]any{})
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, cache.NewMemoryStore(), store)
|
||||
}
|
||||
|
||||
func TestFactory_MakeInvalidDriver(t *testing.T) {
|
||||
store, err := cache.Make("87923yus", map[string]any{})
|
||||
require.Error(t, err)
|
||||
require.Nil(t, store)
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue