navidrome/wire_injectors.go

60 lines
1.8 KiB
Go
Raw Normal View History

//+build wireinject
package main
import (
"github.com/cloudsonic/sonic-server/api"
"github.com/cloudsonic/sonic-server/engine"
"github.com/cloudsonic/sonic-server/itunesbridge"
2020-01-15 04:22:34 +01:00
"github.com/cloudsonic/sonic-server/model"
"github.com/cloudsonic/sonic-server/persistence"
2020-01-15 03:51:35 +01:00
"github.com/cloudsonic/sonic-server/scanner_legacy"
2020-01-13 23:06:47 +01:00
"github.com/cloudsonic/sonic-server/server"
"github.com/google/wire"
)
2020-01-15 23:49:09 +01:00
// TODO Can we remove this indirection?
2020-01-15 04:22:34 +01:00
type Repositories struct {
AlbumRepository model.AlbumRepository
ArtistRepository model.ArtistRepository
2020-01-15 14:54:00 +01:00
CheckSumRepository model.ChecksumRepository
2020-01-15 04:22:34 +01:00
ArtistIndexRepository model.ArtistIndexRepository
MediaFileRepository model.MediaFileRepository
MediaFolderRepository model.MediaFolderRepository
NowPlayingRepository model.NowPlayingRepository
PlaylistRepository model.PlaylistRepository
PropertyRepository model.PropertyRepository
2020-01-15 23:49:09 +01:00
GenreRepository model.GenreRepository
}
var allProviders = wire.NewSet(
itunesbridge.NewItunesControl,
engine.Set,
2020-01-15 03:51:35 +01:00
scanner_legacy.Set,
api.NewRouter,
2020-01-15 04:22:34 +01:00
wire.FieldsOf(new(*Repositories), "AlbumRepository", "ArtistRepository", "CheckSumRepository",
"ArtistIndexRepository", "MediaFileRepository", "MediaFolderRepository", "NowPlayingRepository",
2020-01-15 23:49:09 +01:00
"PlaylistRepository", "PropertyRepository", "GenreRepository"),
createPersistenceProvider,
)
2020-01-13 23:06:47 +01:00
func CreateApp(musicFolder string) *server.Server {
2020-01-11 19:00:03 +01:00
panic(wire.Build(
2020-01-13 23:06:47 +01:00
server.New,
2020-01-11 19:00:03 +01:00
allProviders,
))
}
func CreateSubsonicAPIRouter() *api.Router {
panic(wire.Build(allProviders))
}
// When implementing a different persistence layer, duplicate this function (in separated files) and use build tags
// to conditionally select which function to use
2020-01-15 04:22:34 +01:00
func createPersistenceProvider() *Repositories {
2020-01-13 00:36:19 +01:00
panic(wire.Build(
persistence.Set,
2020-01-15 04:22:34 +01:00
wire.Struct(new(Repositories), "*"),
2020-01-13 00:36:19 +01:00
))
}