mirror of
https://git.sr.ht/~phw/scotty
synced 2025-04-29 21:27:05 +02:00
Use config.ServiceConfig across API
This commit is contained in:
parent
091b3c2f49
commit
9c363cc06d
27 changed files with 137 additions and 99 deletions
|
@ -22,7 +22,6 @@ import (
|
|||
"sort"
|
||||
"strings"
|
||||
|
||||
"github.com/spf13/viper"
|
||||
"go.uploadedlobster.com/scotty/internal/backends/deezer"
|
||||
"go.uploadedlobster.com/scotty/internal/backends/dump"
|
||||
"go.uploadedlobster.com/scotty/internal/backends/funkwhale"
|
||||
|
@ -33,6 +32,7 @@ import (
|
|||
"go.uploadedlobster.com/scotty/internal/backends/scrobblerlog"
|
||||
"go.uploadedlobster.com/scotty/internal/backends/spotify"
|
||||
"go.uploadedlobster.com/scotty/internal/backends/subsonic"
|
||||
"go.uploadedlobster.com/scotty/internal/config"
|
||||
"go.uploadedlobster.com/scotty/internal/models"
|
||||
)
|
||||
|
||||
|
@ -62,8 +62,8 @@ func (l BackendList) Swap(i, j int) {
|
|||
|
||||
type Capability = string
|
||||
|
||||
func ResolveBackend[T interface{}](config *viper.Viper) (T, error) {
|
||||
backendName, backend, err := backendWithConfig(config)
|
||||
func ResolveBackend[T interface{}](config *config.ServiceConfig) (T, error) {
|
||||
backend, err := backendWithConfig(config)
|
||||
var result T
|
||||
if err != nil {
|
||||
return result, err
|
||||
|
@ -72,7 +72,7 @@ func ResolveBackend[T interface{}](config *viper.Viper) (T, error) {
|
|||
if implements {
|
||||
result = backend.(T)
|
||||
} else {
|
||||
err = fmt.Errorf("backend %s does not implement %s", backendName, interfaceName)
|
||||
err = fmt.Errorf("backend %s does not implement %s", config.Backend, interfaceName)
|
||||
}
|
||||
|
||||
return result, err
|
||||
|
@ -81,7 +81,7 @@ func ResolveBackend[T interface{}](config *viper.Viper) (T, error) {
|
|||
func BackendByName(backendName string) (models.Backend, error) {
|
||||
backendType := knownBackends[backendName]
|
||||
if backendType == nil {
|
||||
return nil, fmt.Errorf("unknown backend %s", backendName)
|
||||
return nil, fmt.Errorf("unknown backend \"%s\"", backendName)
|
||||
}
|
||||
return backendType(), nil
|
||||
}
|
||||
|
@ -115,13 +115,12 @@ var knownBackends = map[string]func() models.Backend{
|
|||
"subsonic": func() models.Backend { return &subsonic.SubsonicApiBackend{} },
|
||||
}
|
||||
|
||||
func backendWithConfig(config *viper.Viper) (string, models.Backend, error) {
|
||||
backendName := config.GetString("backend")
|
||||
backend, err := BackendByName(backendName)
|
||||
func backendWithConfig(config *config.ServiceConfig) (models.Backend, error) {
|
||||
backend, err := BackendByName(config.Backend)
|
||||
if err != nil {
|
||||
return backendName, nil, err
|
||||
return nil, err
|
||||
}
|
||||
return backendName, backend.FromConfig(config), nil
|
||||
return backend.FromConfig(config), nil
|
||||
}
|
||||
|
||||
func ImplementsInterface[T interface{}](backend *models.Backend) (bool, string) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue