|
|
@@ -7,6 +7,7 @@ import (
|
|
|
|
|
|
"github.com/felamaslen/go-music-player/pkg/database"
|
|
|
"github.com/felamaslen/go-music-player/pkg/logger"
|
|
|
+ "github.com/felamaslen/go-music-player/pkg/read"
|
|
|
"github.com/felamaslen/go-music-player/pkg/repository"
|
|
|
"github.com/felamaslen/go-music-player/pkg/services"
|
|
|
"github.com/go-redis/redis/v7"
|
|
|
@@ -78,3 +79,30 @@ func routeFetchAlbums(l *logger.Logger, rdb *redis.Client, w http.ResponseWriter
|
|
|
w.Write(response)
|
|
|
return nil
|
|
|
}
|
|
|
+
|
|
|
+type SongsResponse struct {
|
|
|
+ Artist string `json:"artist"`
|
|
|
+ Songs *[]*read.SongExternal `json:"songs"`
|
|
|
+}
|
|
|
+
|
|
|
+func routeFetchSongs(l *logger.Logger, rdb *redis.Client, w http.ResponseWriter, r *http.Request) error {
|
|
|
+ artist := r.URL.Query().Get("artist")
|
|
|
+
|
|
|
+ db := database.GetConnection()
|
|
|
+
|
|
|
+ songs, err := repository.SelectSongsByArtist(db, artist)
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+
|
|
|
+ response, err := json.Marshal(SongsResponse{
|
|
|
+ Artist: artist,
|
|
|
+ Songs: songs,
|
|
|
+ })
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+
|
|
|
+ w.Write(response)
|
|
|
+ return nil
|
|
|
+}
|