Попытка сделать фабрики репозиториев для абстрактных хранилищ данных.

Добавлено чтение конфигурации из файла.
This commit is contained in:
ErickSkrauch
2017-08-14 21:06:22 +03:00
parent d51c358ef6
commit b99697d26e
9 changed files with 178 additions and 115 deletions

34
db/factory.go Normal file
View File

@@ -0,0 +1,34 @@
package db
import (
"github.com/spf13/viper"
"elyby/minecraft-skinsystem/repositories"
)
type StorageFactory struct {
Config *viper.Viper
}
type RepositoriesCreator interface {
CreateSkinsRepository() (repositories.SkinsRepository, error)
CreateCapesRepository() (repositories.CapesRepository, error)
}
func (factory *StorageFactory) CreateFactory(backend string) RepositoriesCreator {
switch backend {
case "redis":
return &RedisFactory{
Host: factory.Config.GetString("storage.redis.host"),
Port: factory.Config.GetInt("storage.redis.port"),
PoolSize: factory.Config.GetInt("storage.redis.poolSize"),
}
case "filesystem":
return &FilesystemFactory{
BasePath : factory.Config.GetString("storage.filesystem.basePath"),
CapesDirName: factory.Config.GetString("storage.filesystem.capesDirName"),
}
}
return nil
}