From 4f151a74090127e971a5e9f32576c9f6694cd1a3 Mon Sep 17 00:00:00 2001 From: Deluan Date: Fri, 10 Jan 2020 19:58:30 -0500 Subject: [PATCH] Storm PlaylistRepository complete. --- api/wire_gen.go | 2 +- persistence/db_ledis/wire_providers.go | 1 - persistence/db_storm/playlist_repository.go | 65 +++++++++++++++++++++ persistence/db_storm/wire_providers.go | 1 + wire_gen.go | 2 +- 5 files changed, 68 insertions(+), 3 deletions(-) create mode 100644 persistence/db_storm/playlist_repository.go diff --git a/api/wire_gen.go b/api/wire_gen.go index c8af1e42..e81d31a0 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 20a00b83..2459b56a 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 00000000..41b8fd3a --- /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 624aad52..2228a0f7 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 81cd8c96..4a7a0268 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)