diff --git a/api/wire_gen.go b/api/wire_gen.go index c8af1e42c..e81d31a03 100644 --- a/api/wire_gen.go +++ b/api/wire_gen.go @@ -58,7 +58,7 @@ func initMediaAnnotationController() *MediaAnnotationController { func initPlaylistsController() *PlaylistsController { itunesControl := itunesbridge.NewItunesControl() - playlistRepository := db_ledis.NewPlaylistRepository() + playlistRepository := db_storm.NewPlaylistRepository() mediaFileRepository := db_storm.NewMediaFileRepository() playlists := engine.NewPlaylists(itunesControl, playlistRepository, mediaFileRepository) playlistsController := NewPlaylistsController(playlists) diff --git a/persistence/db_ledis/wire_providers.go b/persistence/db_ledis/wire_providers.go index 20a00b835..2459b56aa 100644 --- a/persistence/db_ledis/wire_providers.go +++ b/persistence/db_ledis/wire_providers.go @@ -7,5 +7,4 @@ import ( var Set = wire.NewSet( NewCheckSumRepository, NewNowPlayingRepository, - NewPlaylistRepository, ) diff --git a/persistence/db_storm/playlist_repository.go b/persistence/db_storm/playlist_repository.go new file mode 100644 index 000000000..41b8fd3a8 --- /dev/null +++ b/persistence/db_storm/playlist_repository.go @@ -0,0 +1,65 @@ +package db_storm + +import ( + "github.com/cloudsonic/sonic-server/domain" +) + +type _Playlist struct { + ID string + Name string + Comment string + FullPath string + Duration int + Owner string + Public bool + Tracks []string +} + +type playlistRepository struct { + stormRepository +} + +func NewPlaylistRepository() domain.PlaylistRepository { + r := &playlistRepository{} + r.init(&_Playlist{}) + return r +} + +func (r *playlistRepository) Put(p *domain.Playlist) error { + tp := _Playlist(*p) + return Db().Save(&tp) +} + +func (r *playlistRepository) Get(id string) (*domain.Playlist, error) { + tp := &_Playlist{} + err := r.getByID(id, tp) + if err != nil { + return nil, err + } + a := domain.Playlist(*tp) + return &a, err +} + +func (r *playlistRepository) GetAll(options domain.QueryOptions) (domain.Playlists, error) { + var all []_Playlist + err := r.getAll(&all, &options) + if err != nil { + return nil, err + } + return r.toPlaylists(all) +} + +func (r *playlistRepository) toPlaylists(all []_Playlist) (domain.Playlists, error) { + result := make(domain.Playlists, len(all)) + for i, p := range all { + result[i] = domain.Playlist(p) + } + return result, nil +} + +func (r *playlistRepository) PurgeInactive(activeList domain.Playlists) ([]string, error) { + return r.purgeInactive(activeList) +} + +var _ domain.PlaylistRepository = (*playlistRepository)(nil) +var _ = domain.Playlist(_Playlist{}) diff --git a/persistence/db_storm/wire_providers.go b/persistence/db_storm/wire_providers.go index 624aad520..2228a0f70 100644 --- a/persistence/db_storm/wire_providers.go +++ b/persistence/db_storm/wire_providers.go @@ -11,5 +11,6 @@ var Set = wire.NewSet( NewAlbumRepository, NewMediaFileRepository, NewArtistIndexRepository, + NewPlaylistRepository, persistence.NewMediaFolderRepository, ) diff --git a/wire_gen.go b/wire_gen.go index 81cd8c962..4a7a02686 100644 --- a/wire_gen.go +++ b/wire_gen.go @@ -25,7 +25,7 @@ func initImporter(musicFolder string) *scanner.Importer { albumRepository := db_storm.NewAlbumRepository() artistRepository := db_storm.NewArtistRepository() artistIndexRepository := db_storm.NewArtistIndexRepository() - playlistRepository := db_ledis.NewPlaylistRepository() + playlistRepository := db_storm.NewPlaylistRepository() propertyRepository := db_storm.NewPropertyRepository() db := newDB() search := engine.NewSearch(artistRepository, albumRepository, mediaFileRepository, db)