mirror of
https://git.sr.ht/~phw/scotty
synced 2025-04-29 21:27:05 +02:00
Dynamic per-backend configuration options
This commit is contained in:
parent
ae5f1c5f26
commit
c9fa21be73
14 changed files with 262 additions and 17 deletions
|
@ -63,7 +63,7 @@ func (l BackendList) Swap(i, j int) {
|
|||
type Capability = string
|
||||
|
||||
func ResolveBackend[T interface{}](config *viper.Viper) (T, error) {
|
||||
backendName, backend, err := resolveBackend(config)
|
||||
backendName, backend, err := backendWithConfig(config)
|
||||
var result T
|
||||
if err != nil {
|
||||
return result, err
|
||||
|
@ -78,6 +78,14 @@ func ResolveBackend[T interface{}](config *viper.Viper) (T, error) {
|
|||
return result, err
|
||||
}
|
||||
|
||||
func BackendByName(backendName string) (models.Backend, error) {
|
||||
backendType := knownBackends[backendName]
|
||||
if backendType == nil {
|
||||
return nil, fmt.Errorf("unknown backend %s", backendName)
|
||||
}
|
||||
return backendType(), nil
|
||||
}
|
||||
|
||||
func GetBackends() BackendList {
|
||||
backends := make(BackendList, 0)
|
||||
for name, backendFunc := range knownBackends {
|
||||
|
@ -107,13 +115,13 @@ var knownBackends = map[string]func() models.Backend{
|
|||
"subsonic": func() models.Backend { return &subsonic.SubsonicApiBackend{} },
|
||||
}
|
||||
|
||||
func resolveBackend(config *viper.Viper) (string, models.Backend, error) {
|
||||
func backendWithConfig(config *viper.Viper) (string, models.Backend, error) {
|
||||
backendName := config.GetString("backend")
|
||||
backendType := knownBackends[backendName]
|
||||
if backendType == nil {
|
||||
return backendName, nil, fmt.Errorf("unknown backend %s", backendName)
|
||||
backend, err := BackendByName(backendName)
|
||||
if err != nil {
|
||||
return backendName, nil, err
|
||||
}
|
||||
return backendName, backendType().FromConfig(config), nil
|
||||
return backendName, backend.FromConfig(config), nil
|
||||
}
|
||||
|
||||
func ImplementsInterface[T interface{}](backend *models.Backend) (bool, string) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue