2020-01-08 15:39:58 +01:00
|
|
|
//+build wireinject
|
|
|
|
|
2020-07-02 22:34:21 +02:00
|
|
|
package cmd
|
2020-01-08 15:39:58 +01:00
|
|
|
|
|
|
|
import (
|
2020-11-08 06:06:48 +01:00
|
|
|
"sync"
|
|
|
|
|
2020-01-08 15:39:58 +01:00
|
|
|
"github.com/google/wire"
|
2020-07-10 18:45:58 +02:00
|
|
|
"github.com/navidrome/navidrome/core"
|
2020-01-24 01:44:08 +01:00
|
|
|
"github.com/navidrome/navidrome/persistence"
|
|
|
|
"github.com/navidrome/navidrome/scanner"
|
2021-05-06 23:56:10 +02:00
|
|
|
"github.com/navidrome/navidrome/scheduler"
|
2020-01-24 01:44:08 +01:00
|
|
|
"github.com/navidrome/navidrome/server"
|
|
|
|
"github.com/navidrome/navidrome/server/app"
|
2020-11-08 06:06:48 +01:00
|
|
|
"github.com/navidrome/navidrome/server/events"
|
2020-01-24 01:44:08 +01:00
|
|
|
"github.com/navidrome/navidrome/server/subsonic"
|
2020-01-08 15:39:58 +01:00
|
|
|
)
|
|
|
|
|
|
|
|
var allProviders = wire.NewSet(
|
2020-07-10 18:45:58 +02:00
|
|
|
core.Set,
|
2020-01-20 00:28:23 +01:00
|
|
|
subsonic.New,
|
2020-01-20 01:34:54 +01:00
|
|
|
app.New,
|
2020-01-20 00:28:23 +01:00
|
|
|
persistence.New,
|
2021-06-10 18:20:52 +02:00
|
|
|
GetBroker,
|
2020-01-08 15:39:58 +01:00
|
|
|
)
|
|
|
|
|
2020-01-20 01:34:54 +01:00
|
|
|
func CreateServer(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-10-27 23:19:56 +01:00
|
|
|
func CreateAppRouter() *app.Router {
|
2020-11-08 06:06:48 +01:00
|
|
|
panic(wire.Build(
|
|
|
|
allProviders,
|
|
|
|
))
|
2020-10-27 23:19:56 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
func CreateSubsonicAPIRouter() *subsonic.Router {
|
2020-07-03 02:08:41 +02:00
|
|
|
panic(wire.Build(
|
|
|
|
allProviders,
|
2020-10-27 23:19:56 +01:00
|
|
|
GetScanner,
|
2020-07-03 02:08:41 +02:00
|
|
|
))
|
|
|
|
}
|
|
|
|
|
2020-10-27 23:19:56 +01:00
|
|
|
// Scanner must be a Singleton
|
|
|
|
var (
|
|
|
|
onceScanner sync.Once
|
|
|
|
scannerInstance scanner.Scanner
|
|
|
|
)
|
|
|
|
|
|
|
|
func GetScanner() scanner.Scanner {
|
|
|
|
onceScanner.Do(func() {
|
|
|
|
scannerInstance = createScanner()
|
|
|
|
})
|
|
|
|
return scannerInstance
|
2020-01-20 01:34:54 +01:00
|
|
|
}
|
|
|
|
|
2020-10-27 23:19:56 +01:00
|
|
|
func createScanner() scanner.Scanner {
|
|
|
|
panic(wire.Build(
|
|
|
|
allProviders,
|
|
|
|
scanner.New,
|
|
|
|
))
|
2020-01-08 15:39:58 +01:00
|
|
|
}
|
2020-11-08 06:06:48 +01:00
|
|
|
|
|
|
|
// Broker must be a Singleton
|
|
|
|
var (
|
|
|
|
onceBroker sync.Once
|
|
|
|
brokerInstance events.Broker
|
|
|
|
)
|
|
|
|
|
|
|
|
func GetBroker() events.Broker {
|
|
|
|
onceBroker.Do(func() {
|
|
|
|
brokerInstance = createBroker()
|
|
|
|
})
|
|
|
|
return brokerInstance
|
|
|
|
}
|
|
|
|
|
|
|
|
func createBroker() events.Broker {
|
|
|
|
panic(wire.Build(
|
|
|
|
events.NewBroker,
|
|
|
|
))
|
|
|
|
}
|
2021-05-06 23:56:10 +02:00
|
|
|
|
|
|
|
// Scheduler must be a Singleton
|
|
|
|
var (
|
|
|
|
onceScheduler sync.Once
|
|
|
|
schedulerInstance scheduler.Scheduler
|
|
|
|
)
|
|
|
|
|
|
|
|
func GetScheduler() scheduler.Scheduler {
|
|
|
|
onceScheduler.Do(func() {
|
|
|
|
schedulerInstance = createScheduler()
|
|
|
|
})
|
|
|
|
return schedulerInstance
|
|
|
|
}
|
|
|
|
|
|
|
|
func createScheduler() scheduler.Scheduler {
|
|
|
|
panic(wire.Build(
|
|
|
|
scheduler.New,
|
|
|
|
))
|
|
|
|
}
|