Refactor App to use DI

This commit is contained in:
Deluan
2020-01-11 13:00:03 -05:00
committed by Deluan Quintão
parent 30ebbc1fa1
commit 408030eb6c
4 changed files with 28 additions and 25 deletions
+16 -15
View File
@@ -20,6 +20,22 @@ import (
// Injectors from wire_injectors.go:
func createApp(musicFolder string) *App {
checkSumRepository := db_storm.NewCheckSumRepository()
itunesScanner := scanner.NewItunesScanner(checkSumRepository)
mediaFileRepository := db_storm.NewMediaFileRepository()
albumRepository := db_storm.NewAlbumRepository()
artistRepository := db_storm.NewArtistRepository()
artistIndexRepository := db_storm.NewArtistIndexRepository()
playlistRepository := db_storm.NewPlaylistRepository()
propertyRepository := db_storm.NewPropertyRepository()
db := newDB()
search := engine.NewSearch(artistRepository, albumRepository, mediaFileRepository, db)
importer := scanner.NewImporter(musicFolder, itunesScanner, mediaFileRepository, albumRepository, artistRepository, artistIndexRepository, playlistRepository, propertyRepository, search)
app := NewApp(importer)
return app
}
func initRouter() *api.Router {
propertyRepository := db_storm.NewPropertyRepository()
mediaFolderRepository := persistence.NewMediaFolderRepository()
@@ -42,21 +58,6 @@ func initRouter() *api.Router {
return router
}
func initImporter(musicFolder string) *scanner.Importer {
checkSumRepository := db_storm.NewCheckSumRepository()
itunesScanner := scanner.NewItunesScanner(checkSumRepository)
mediaFileRepository := db_storm.NewMediaFileRepository()
albumRepository := db_storm.NewAlbumRepository()
artistRepository := db_storm.NewArtistRepository()
artistIndexRepository := db_storm.NewArtistIndexRepository()
playlistRepository := db_storm.NewPlaylistRepository()
propertyRepository := db_storm.NewPropertyRepository()
db := newDB()
search := engine.NewSearch(artistRepository, albumRepository, mediaFileRepository, db)
importer := scanner.NewImporter(musicFolder, itunesScanner, mediaFileRepository, albumRepository, artistRepository, artistIndexRepository, playlistRepository, propertyRepository, search)
return importer
}
// wire_injectors.go:
var allProviders = wire.NewSet(itunesbridge.NewItunesControl, db_storm.Set, engine.Set, scanner.Set, newDB, api.NewRouter)