🏡 index : quine-global/quintodrome.git

// Code generated by Wire. DO NOT EDIT.

//go:generate go run -mod=mod github.com/google/wire/cmd/wire gen -tags "netgo sqlite_fts5"
//go:build !wireinject
// +build !wireinject

package cmd

import (
	"context"
	"github.com/google/wire"
	"github.com/navidrome/navidrome/adapters/lastfm"
	"github.com/navidrome/navidrome/adapters/listenbrainz"
	"github.com/navidrome/navidrome/core"
	"github.com/navidrome/navidrome/core/agents"
	"github.com/navidrome/navidrome/core/artwork"
	"github.com/navidrome/navidrome/core/external"
	"github.com/navidrome/navidrome/core/ffmpeg"
	"github.com/navidrome/navidrome/core/lyrics"
	"github.com/navidrome/navidrome/core/matcher"
	"github.com/navidrome/navidrome/core/metrics"
	"github.com/navidrome/navidrome/core/playback"
	"github.com/navidrome/navidrome/core/playlists"
	"github.com/navidrome/navidrome/core/quickconnect"
	"github.com/navidrome/navidrome/core/scrobbler"
	"github.com/navidrome/navidrome/core/sonic"
	"github.com/navidrome/navidrome/core/stream"
	"github.com/navidrome/navidrome/db"
	"github.com/navidrome/navidrome/model"
	"github.com/navidrome/navidrome/persistence"
	"github.com/navidrome/navidrome/plugins"
	"github.com/navidrome/navidrome/scanner"
	"github.com/navidrome/navidrome/server"
	"github.com/navidrome/navidrome/server/apiv1"
	"github.com/navidrome/navidrome/server/events"
	"github.com/navidrome/navidrome/server/jellyfin"
	"github.com/navidrome/navidrome/server/nativeapi"
	"github.com/navidrome/navidrome/server/public"
	"github.com/navidrome/navidrome/server/subsonic"
)

import (
	_ "github.com/navidrome/navidrome/adapters/deezer"
	_ "github.com/navidrome/navidrome/adapters/gotaglib"
	_ "github.com/navidrome/navidrome/adapters/lastfm"
	_ "github.com/navidrome/navidrome/adapters/listenbrainz"
)

// Injectors from wire_injectors.go:

func CreateDataStore() model.DataStore {
	sqlDB := db.Db()
	dataStore := persistence.New(sqlDB)
	return dataStore
}

func CreateServer() *server.Server {
	sqlDB := db.Db()
	dataStore := persistence.New(sqlDB)
	broker := events.GetBroker()
	insights := metrics.GetInstance(dataStore)
	serverServer := server.New(dataStore, broker, insights)
	return serverServer
}

func CreateNativeAPIRouter(ctx context.Context) *nativeapi.Router {
	sqlDB := db.Db()
	dataStore := persistence.New(sqlDB)
	share := core.NewShare(dataStore)
	uploader := artwork.NewUploader(dataStore)
	playlistsPlaylists := playlists.NewPlaylists(dataStore, uploader)
	insights := metrics.GetInstance(dataStore)
	broker := events.GetBroker()
	metricsMetrics := metrics.GetPrometheusInstance(dataStore)
	modelScanner := scanner.GetInstance(ctx, dataStore, broker, playlistsPlaylists, metricsMetrics)
	watcher := scanner.GetWatcher(dataStore, modelScanner)
	manager := plugins.GetManager(dataStore, broker, metricsMetrics)
	library := core.NewLibrary(dataStore, modelScanner, watcher, broker, manager)
	user := core.NewUser(dataStore, manager)
	maintenance := core.NewMaintenance(dataStore)
	agentsAgents := agents.GetAgents(dataStore, manager)
	matcherMatcher := matcher.New(dataStore)
	provider := external.NewProvider(dataStore, agentsAgents, matcherMatcher, broker)
	quickConnect := quickconnect.GetInstance()
	router := nativeapi.New(dataStore, share, playlistsPlaylists, insights, library, user, maintenance, manager, uploader, provider, quickConnect)
	return router
}

func CreateSubsonicAPIRouter(ctx context.Context) *subsonic.Router {
	sqlDB := db.Db()
	dataStore := persistence.New(sqlDB)
	fileCache := artwork.GetImageCache()
	imageStore := artwork.GetImageStore()
	fFmpeg := ffmpeg.New()
	artworkArtwork := artwork.NewArtwork(dataStore, fileCache, imageStore, fFmpeg)
	transcodingCache := stream.GetTranscodingCache()
	mediaStreamer := stream.NewMediaStreamer(dataStore, fFmpeg, transcodingCache)
	transcodeDecider := stream.NewTranscodeDecider(dataStore, fFmpeg)
	share := core.NewShare(dataStore)
	archiver := core.NewArchiver(mediaStreamer, transcodeDecider, dataStore, share, artworkArtwork)
	players := core.NewPlayers(dataStore)
	broker := events.GetBroker()
	metricsMetrics := metrics.GetPrometheusInstance(dataStore)
	manager := plugins.GetManager(dataStore, broker, metricsMetrics)
	agentsAgents := agents.GetAgents(dataStore, manager)
	matcherMatcher := matcher.New(dataStore)
	provider := external.NewProvider(dataStore, agentsAgents, matcherMatcher, broker)
	uploader := artwork.NewUploader(dataStore)
	playlistsPlaylists := playlists.NewPlaylists(dataStore, uploader)
	modelScanner := scanner.GetInstance(ctx, dataStore, broker, playlistsPlaylists, metricsMetrics)
	playTracker := scrobbler.GetPlayTracker(dataStore, broker, manager)
	playbackServer := playback.GetInstance(dataStore)
	lyricsLyrics := lyrics.NewLyrics(dataStore, manager)
	sonicSonic := sonic.New(dataStore, manager, matcherMatcher)
	router := subsonic.New(dataStore, artworkArtwork, mediaStreamer, archiver, players, provider, modelScanner, broker, playlistsPlaylists, playTracker, share, playbackServer, metricsMetrics, lyricsLyrics, transcodeDecider, sonicSonic)
	return router
}

func CreateJellyfinAPIRouter(ctx context.Context) *jellyfin.Router {
	sqlDB := db.Db()
	dataStore := persistence.New(sqlDB)
	fileCache := artwork.GetImageCache()
	imageStore := artwork.GetImageStore()
	fFmpeg := ffmpeg.New()
	artworkArtwork := artwork.NewArtwork(dataStore, fileCache, imageStore, fFmpeg)
	transcodingCache := stream.GetTranscodingCache()
	mediaStreamer := stream.NewMediaStreamer(dataStore, fFmpeg, transcodingCache)
	transcodeDecider := stream.NewTranscodeDecider(dataStore, fFmpeg)
	players := core.NewPlayers(dataStore)
	broker := events.GetBroker()
	metricsMetrics := metrics.GetPrometheusInstance(dataStore)
	manager := plugins.GetManager(dataStore, broker, metricsMetrics)
	playTracker := scrobbler.GetPlayTracker(dataStore, broker, manager)
	uploader := artwork.NewUploader(dataStore)
	playlistsPlaylists := playlists.NewPlaylists(dataStore, uploader)
	agentsAgents := agents.GetAgents(dataStore, manager)
	matcherMatcher := matcher.New(dataStore)
	provider := external.NewProvider(dataStore, agentsAgents, matcherMatcher, broker)
	sonicSonic := sonic.New(dataStore, manager, matcherMatcher)
	lyricsLyrics := lyrics.NewLyrics(dataStore, manager)
	quickConnect := quickconnect.GetInstance()
	router := jellyfin.New(dataStore, artworkArtwork, mediaStreamer, transcodeDecider, players, playTracker, playlistsPlaylists, provider, sonicSonic, lyricsLyrics, broker, quickConnect)
	return router
}

func CreateAPIv1Router(ctx context.Context) *apiv1.Router {
	sqlDB := db.Db()
	dataStore := persistence.New(sqlDB)
	router := apiv1.New(dataStore)
	return router
}

func CreatePublicRouter() *public.Router {
	sqlDB := db.Db()
	dataStore := persistence.New(sqlDB)
	fileCache := artwork.GetImageCache()
	imageStore := artwork.GetImageStore()
	fFmpeg := ffmpeg.New()
	artworkArtwork := artwork.NewArtwork(dataStore, fileCache, imageStore, fFmpeg)
	transcodingCache := stream.GetTranscodingCache()
	mediaStreamer := stream.NewMediaStreamer(dataStore, fFmpeg, transcodingCache)
	transcodeDecider := stream.NewTranscodeDecider(dataStore, fFmpeg)
	share := core.NewShare(dataStore)
	archiver := core.NewArchiver(mediaStreamer, transcodeDecider, dataStore, share, artworkArtwork)
	router := public.New(dataStore, artworkArtwork, mediaStreamer, transcodeDecider, share, archiver)
	return router
}

func CreateLastFMRouter() *lastfm.Router {
	sqlDB := db.Db()
	dataStore := persistence.New(sqlDB)
	router := lastfm.NewRouter(dataStore)
	return router
}

func CreateListenBrainzRouter() *listenbrainz.Router {
	sqlDB := db.Db()
	dataStore := persistence.New(sqlDB)
	router := listenbrainz.NewRouter(dataStore)
	return router
}

func CreateJellyfinDiscovery() *jellyfin.Discovery {
	sqlDB := db.Db()
	dataStore := persistence.New(sqlDB)
	discovery := jellyfin.NewDiscovery(dataStore)
	return discovery
}

func CreateInsights() metrics.Insights {
	sqlDB := db.Db()
	dataStore := persistence.New(sqlDB)
	insights := metrics.GetInstance(dataStore)
	return insights
}

func CreatePrometheus() metrics.Metrics {
	sqlDB := db.Db()
	dataStore := persistence.New(sqlDB)
	metricsMetrics := metrics.GetPrometheusInstance(dataStore)
	return metricsMetrics
}

func CreateScanner(ctx context.Context) model.Scanner {
	sqlDB := db.Db()
	dataStore := persistence.New(sqlDB)
	broker := events.GetBroker()
	uploader := artwork.NewUploader(dataStore)
	playlistsPlaylists := playlists.NewPlaylists(dataStore, uploader)
	metricsMetrics := metrics.GetPrometheusInstance(dataStore)
	modelScanner := scanner.GetInstance(ctx, dataStore, broker, playlistsPlaylists, metricsMetrics)
	return modelScanner
}

func CreateScanWatcher(ctx context.Context) scanner.Watcher {
	sqlDB := db.Db()
	dataStore := persistence.New(sqlDB)
	broker := events.GetBroker()
	uploader := artwork.NewUploader(dataStore)
	playlistsPlaylists := playlists.NewPlaylists(dataStore, uploader)
	metricsMetrics := metrics.GetPrometheusInstance(dataStore)
	modelScanner := scanner.GetInstance(ctx, dataStore, broker, playlistsPlaylists, metricsMetrics)
	watcher := scanner.GetWatcher(dataStore, modelScanner)
	return watcher
}

func GetPlaybackServer() playback.PlaybackServer {
	sqlDB := db.Db()
	dataStore := persistence.New(sqlDB)
	playbackServer := playback.GetInstance(dataStore)
	return playbackServer
}

func CreateArtworkWorker() *artwork.Worker {
	sqlDB := db.Db()
	dataStore := persistence.New(sqlDB)
	imageStore := artwork.GetImageStore()
	broker := events.GetBroker()
	metricsMetrics := metrics.GetPrometheusInstance(dataStore)
	manager := plugins.GetManager(dataStore, broker, metricsMetrics)
	agentsAgents := agents.GetAgents(dataStore, manager)
	fFmpeg := ffmpeg.New()
	fileCache := artwork.GetImageCache()
	worker := artwork.NewWorker(dataStore, imageStore, agentsAgents, fFmpeg, broker, fileCache)
	return worker
}

func CreateArtworkResolver(trace *artwork.ChainTrace, live bool) *artwork.TracingResolver {
	sqlDB := db.Db()
	dataStore := persistence.New(sqlDB)
	broker := events.GetBroker()
	metricsMetrics := metrics.GetPrometheusInstance(dataStore)
	manager := plugins.GetManager(dataStore, broker, metricsMetrics)
	agentsAgents := agents.GetAgents(dataStore, manager)
	fFmpeg := ffmpeg.New()
	tracingResolver := artwork.NewTracingResolver(dataStore, agentsAgents, fFmpeg, trace, live)
	return tracingResolver
}

func getPluginManager() *plugins.Manager {
	sqlDB := db.Db()
	dataStore := persistence.New(sqlDB)
	broker := events.GetBroker()
	metricsMetrics := metrics.GetPrometheusInstance(dataStore)
	manager := plugins.GetManager(dataStore, broker, metricsMetrics)
	return manager
}

// wire_injectors.go:

var allProviders = wire.NewSet(core.Set, artwork.Set, server.New, subsonic.New, jellyfin.New, jellyfin.NewDiscovery, apiv1.New, nativeapi.New, public.New, persistence.New, lastfm.NewRouter, listenbrainz.NewRouter, events.GetBroker, scanner.GetInstance, scanner.GetWatcher, metrics.GetPrometheusInstance, db.Db, plugins.GetManager, sonic.New, wire.Bind(new(agents.PluginLoader), new(*plugins.Manager)), wire.Bind(new(scrobbler.PluginLoader), new(*plugins.Manager)), wire.Bind(new(lyrics.PluginLoader), new(*plugins.Manager)), wire.Bind(new(sonic.PluginLoader), new(*plugins.Manager)), wire.Bind(new(sonic.Engine), new(*sonic.Sonic)), wire.Bind(new(nativeapi.PluginManager), new(*plugins.Manager)), wire.Bind(new(core.PluginUnloader), new(*plugins.Manager)), wire.Bind(new(plugins.PluginMetricsRecorder), new(metrics.Metrics)), wire.Bind(new(core.Watcher), new(scanner.Watcher)), wire.Bind(new(playlists.ImageUploadService), new(artwork.Uploader)))

func GetPluginManager(ctx context.Context) *plugins.Manager {
	manager := getPluginManager()
	manager.SetSubsonicRouter(CreateSubsonicAPIRouter(ctx))
	return manager
}