diff --git a/engine/browser.go b/engine/browser.go index 8b4d31fd2..116d4e1ac 100644 --- a/engine/browser.go +++ b/engine/browser.go @@ -15,7 +15,7 @@ import ( type Browser interface { MediaFolders(ctx context.Context) (model.MediaFolders, error) - Indexes(ctx context.Context, ifModifiedSince time.Time) (model.ArtistIndexes, time.Time, error) + Indexes(ctx context.Context, mediaFolderId string, ifModifiedSince time.Time) (model.ArtistIndexes, time.Time, error) Directory(ctx context.Context, id string) (*DirectoryInfo, error) Artist(ctx context.Context, id string) (*DirectoryInfo, error) Album(ctx context.Context, id string) (*DirectoryInfo, error) @@ -35,8 +35,11 @@ func (b *browser) MediaFolders(ctx context.Context) (model.MediaFolders, error) return b.ds.MediaFolder(ctx).GetAll() } -func (b *browser) Indexes(ctx context.Context, ifModifiedSince time.Time) (model.ArtistIndexes, time.Time, error) { - l, err := b.ds.Property(ctx).DefaultGet(model.PropLastScan, "-1") +func (b *browser) Indexes(ctx context.Context, mediaFolderId string, ifModifiedSince time.Time) (model.ArtistIndexes, time.Time, error) { + // TODO Proper handling of mediaFolderId param + folder, err := b.ds.MediaFolder(ctx).Get(mediaFolderId) + + l, err := b.ds.Property(ctx).DefaultGet(model.PropLastScan+"-"+folder.Path, "-1") ms, _ := strconv.ParseInt(l, 10, 64) lastModified := utils.ToTime(ms) diff --git a/model/mediafolder.go b/model/mediafolder.go index a78028d79..39a178366 100644 --- a/model/mediafolder.go +++ b/model/mediafolder.go @@ -9,5 +9,6 @@ type MediaFolder struct { type MediaFolders []MediaFolder type MediaFolderRepository interface { + Get(id string) (*MediaFolder, error) GetAll() (MediaFolders, error) } diff --git a/persistence/mediafolders_repository.go b/persistence/mediafolders_repository.go index be47ebecf..1d64e0f2e 100644 --- a/persistence/mediafolders_repository.go +++ b/persistence/mediafolders_repository.go @@ -16,12 +16,22 @@ func NewMediaFolderRepository(ctx context.Context, o orm.Ormer) model.MediaFolde return &mediaFolderRepository{ctx} } +func (r *mediaFolderRepository) Get(id string) (*model.MediaFolder, error) { + mediaFolder := hardCoded() + return &mediaFolder, nil +} + func (*mediaFolderRepository) GetAll() (model.MediaFolders, error) { - mediaFolder := model.MediaFolder{ID: "0", Path: conf.Server.MusicFolder} - mediaFolder.Name = "Music Library" + mediaFolder := hardCoded() result := make(model.MediaFolders, 1) result[0] = mediaFolder return result, nil } +func hardCoded() model.MediaFolder { + mediaFolder := model.MediaFolder{ID: "0", Path: conf.Server.MusicFolder} + mediaFolder.Name = "Music Library" + return mediaFolder +} + var _ model.MediaFolderRepository = (*mediaFolderRepository)(nil) diff --git a/server/subsonic/browsing.go b/server/subsonic/browsing.go index 2d6ec63ad..d2c0ea057 100644 --- a/server/subsonic/browsing.go +++ b/server/subsonic/browsing.go @@ -33,8 +33,8 @@ func (c *BrowsingController) GetMusicFolders(w http.ResponseWriter, r *http.Requ return response, nil } -func (c *BrowsingController) getArtistIndex(r *http.Request, ifModifiedSince time.Time) (*responses.Indexes, error) { - indexes, lastModified, err := c.browser.Indexes(r.Context(), ifModifiedSince) +func (c *BrowsingController) getArtistIndex(r *http.Request, musicFolderId string, ifModifiedSince time.Time) (*responses.Indexes, error) { + indexes, lastModified, err := c.browser.Indexes(r.Context(), musicFolderId, ifModifiedSince) if err != nil { log.Error(r, "Error retrieving Indexes", "error", err) return nil, NewError(responses.ErrorGeneric, "Internal Error") @@ -59,9 +59,10 @@ func (c *BrowsingController) getArtistIndex(r *http.Request, ifModifiedSince tim } func (c *BrowsingController) GetIndexes(w http.ResponseWriter, r *http.Request) (*responses.Subsonic, error) { + musicFolderId := ParamString(r, "musicFolderId") ifModifiedSince := ParamTime(r, "ifModifiedSince", time.Time{}) - res, err := c.getArtistIndex(r, ifModifiedSince) + res, err := c.getArtistIndex(r, musicFolderId, ifModifiedSince) if err != nil { return nil, err } @@ -72,7 +73,8 @@ func (c *BrowsingController) GetIndexes(w http.ResponseWriter, r *http.Request) } func (c *BrowsingController) GetArtists(w http.ResponseWriter, r *http.Request) (*responses.Subsonic, error) { - res, err := c.getArtistIndex(r, time.Time{}) + musicFolderId := ParamString(r, "musicFolderId") + res, err := c.getArtistIndex(r, musicFolderId, time.Time{}) if err != nil { return nil, err }