2020-01-08 15:39:58 +01:00
|
|
|
//+build wireinject
|
|
|
|
|
|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
2020-01-11 18:37:05 +01:00
|
|
|
"github.com/cloudsonic/sonic-server/api"
|
2020-01-08 15:39:58 +01:00
|
|
|
"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"
|
2020-01-15 00:23:29 +01:00
|
|
|
"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"
|
2020-01-08 15:39:58 +01:00
|
|
|
"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
|
2020-01-11 20:58:46 +01:00
|
|
|
}
|
|
|
|
|
2020-01-08 15:39:58 +01:00
|
|
|
var allProviders = wire.NewSet(
|
|
|
|
itunesbridge.NewItunesControl,
|
|
|
|
engine.Set,
|
2020-01-15 03:51:35 +01:00
|
|
|
scanner_legacy.Set,
|
2020-01-11 18:37:05 +01:00
|
|
|
api.NewRouter,
|
2020-01-15 04:22:34 +01:00
|
|
|
wire.FieldsOf(new(*Repositories), "AlbumRepository", "ArtistRepository", "CheckSumRepository",
|
2020-01-11 20:58:46 +01:00
|
|
|
"ArtistIndexRepository", "MediaFileRepository", "MediaFolderRepository", "NowPlayingRepository",
|
2020-01-15 23:49:09 +01:00
|
|
|
"PlaylistRepository", "PropertyRepository", "GenreRepository"),
|
2020-01-11 20:58:46 +01:00
|
|
|
createPersistenceProvider,
|
2020-01-08 15:39:58 +01:00
|
|
|
)
|
|
|
|
|
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,
|
|
|
|
))
|
2020-01-11 18:37:05 +01:00
|
|
|
}
|
|
|
|
|
2020-01-13 22:37:24 +01:00
|
|
|
func CreateSubsonicAPIRouter() *api.Router {
|
2020-01-08 15:39:58 +01:00
|
|
|
panic(wire.Build(allProviders))
|
|
|
|
}
|
|
|
|
|
2020-01-13 22:37:24 +01:00
|
|
|
// 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(
|
2020-01-15 00:23:29 +01:00
|
|
|
persistence.Set,
|
2020-01-15 04:22:34 +01:00
|
|
|
wire.Struct(new(Repositories), "*"),
|
2020-01-13 00:36:19 +01:00
|
|
|
))
|
|
|
|
}
|