mirror of
https://github.com/gabehf/Koito.git
synced 2026-04-22 20:11:50 -07:00
Feat: Edit Artists
This commit is contained in:
parent
e36eb48036
commit
c641707be9
15 changed files with 678 additions and 283 deletions
|
|
@ -131,46 +131,3 @@ func MergeArtistsHandler(store db.DB) http.HandlerFunc {
|
|||
w.WriteHeader(http.StatusNoContent)
|
||||
}
|
||||
}
|
||||
|
||||
func UpdateAlbumHandler(store db.DB) http.HandlerFunc {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
ctx := r.Context()
|
||||
l := logger.FromContext(ctx)
|
||||
|
||||
l.Debug().Msg("UpdateAlbumHandler: Received request")
|
||||
|
||||
idStr := r.URL.Query().Get("id")
|
||||
id, err := strconv.Atoi(idStr)
|
||||
|
||||
valStr := r.URL.Query().Get("is_various_artists")
|
||||
var variousArists bool
|
||||
var updateVariousArtists = false
|
||||
if strings.ToLower(valStr) == "true" {
|
||||
variousArists = true
|
||||
updateVariousArtists = true
|
||||
} else if strings.ToLower(valStr) == "false" {
|
||||
variousArists = false
|
||||
updateVariousArtists = true
|
||||
}
|
||||
if err != nil {
|
||||
l.Debug().AnErr("error", err).Msg("UpdateAlbumHandler: Invalid id parameter")
|
||||
utils.WriteError(w, "id is invalid", http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
|
||||
err = store.UpdateAlbum(ctx, db.UpdateAlbumOpts{
|
||||
ID: int32(id),
|
||||
VariousArtistsUpdate: updateVariousArtists,
|
||||
VariousArtistsValue: variousArists,
|
||||
})
|
||||
if err != nil {
|
||||
l.Debug().AnErr("error", err).Msg("UpdateAlbumHandler: Failed to update album")
|
||||
utils.WriteError(w, "failed to update album", http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
|
||||
l.Debug().Msg("UpdateAlbumHandler: Successfully updated album")
|
||||
|
||||
w.WriteHeader(http.StatusNoContent)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
124
engine/handlers/update.go
Normal file
124
engine/handlers/update.go
Normal file
|
|
@ -0,0 +1,124 @@
|
|||
package handlers
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"strconv"
|
||||
|
||||
"github.com/gabehf/koito/internal/db"
|
||||
"github.com/gabehf/koito/internal/logger"
|
||||
"github.com/gabehf/koito/internal/utils"
|
||||
)
|
||||
|
||||
func UpdateTrackHandler(store db.DB) http.HandlerFunc {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
ctx := r.Context()
|
||||
l := logger.FromContext(ctx)
|
||||
|
||||
l.Debug().Msg("UpdateTrackHandler: Received request")
|
||||
|
||||
if err := r.ParseForm(); err != nil {
|
||||
l.Debug().AnErr("error", err).Msg("UpdateTrackHandler: Failed to parse form")
|
||||
utils.WriteError(w, "form is invalid", http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
|
||||
idStr := r.Form.Get("id")
|
||||
id, err := strconv.Atoi(idStr)
|
||||
if err != nil {
|
||||
l.Debug().AnErr("error", err).Msg("UpdateTrackHandler: Invalid id parameter")
|
||||
utils.WriteError(w, "id is invalid", http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
|
||||
var updateOpts = db.UpdateTrackOpts{
|
||||
ID: int32(id),
|
||||
}
|
||||
|
||||
if formVal, ok := r.Form["add_artist"]; ok {
|
||||
var artists []int32
|
||||
for _, val := range formVal {
|
||||
if id, err := strconv.Atoi(val); err != nil {
|
||||
l.Debug().AnErr("error", err).Msg("UpdateTrackHandler: ID of artist to add is invalid")
|
||||
utils.WriteError(w, "ID of artist to add is invalid", http.StatusBadRequest)
|
||||
return
|
||||
} else {
|
||||
artists = append(artists, int32(id))
|
||||
}
|
||||
}
|
||||
updateOpts.AddArtists = artists
|
||||
}
|
||||
|
||||
if formVal, ok := r.Form["remove_artist"]; ok {
|
||||
var artists []int32
|
||||
for _, val := range formVal {
|
||||
if id, err := strconv.Atoi(val); err != nil {
|
||||
l.Debug().Msg("UpdateTrackHandler: ID of artist to remove is invalid")
|
||||
utils.WriteError(w, "ID of artist to remove is invalid", http.StatusBadRequest)
|
||||
return
|
||||
} else {
|
||||
artists = append(artists, int32(id))
|
||||
}
|
||||
}
|
||||
updateOpts.RemoveArtists = artists
|
||||
}
|
||||
|
||||
if err = store.UpdateTrack(ctx, updateOpts); err != nil {
|
||||
l.Debug().AnErr("error", err).Msg("UpdateTrackHandler: Failed to update track")
|
||||
utils.WriteError(w, "failed to update track", http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
|
||||
l.Debug().Msg("UpdateTrackHandler: Successfully updated track")
|
||||
|
||||
w.WriteHeader(http.StatusOK)
|
||||
}
|
||||
}
|
||||
|
||||
func UpdateAlbumHandler(store db.DB) http.HandlerFunc {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
ctx := r.Context()
|
||||
l := logger.FromContext(ctx)
|
||||
|
||||
l.Debug().Msg("UpdateAlbumHandler: Received request")
|
||||
|
||||
if err := r.ParseForm(); err != nil {
|
||||
l.Debug().AnErr("error", err).Msg("UpdateAlbumHandler: Failed to parse form")
|
||||
utils.WriteError(w, "form is invalid", http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
|
||||
idStr := r.Form.Get("id")
|
||||
id, err := strconv.Atoi(idStr)
|
||||
if err != nil {
|
||||
l.Debug().AnErr("error", err).Msg("UpdateAlbumHandler: Invalid id parameter")
|
||||
utils.WriteError(w, "id is invalid", http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
|
||||
var updateOpts = db.UpdateAlbumOpts{
|
||||
ID: int32(id),
|
||||
}
|
||||
|
||||
if r.Form.Has("is_various_artists") {
|
||||
valStr := r.Form.Get("is_various_artists")
|
||||
VariousArtistsValue, err := strconv.ParseBool(valStr)
|
||||
if err != nil {
|
||||
l.Debug().AnErr("error", err).Msg("UpdateAlbumHandler: Various artists setting is invalid")
|
||||
utils.WriteError(w, "Various artists setting is invalid", http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
updateOpts.VariousArtistsUpdate = true
|
||||
updateOpts.VariousArtistsValue = VariousArtistsValue
|
||||
}
|
||||
|
||||
if err = store.UpdateAlbum(ctx, updateOpts); err != nil {
|
||||
l.Debug().AnErr("error", err).Msg("UpdateAlbumHandler: Failed to update album")
|
||||
utils.WriteError(w, "failed to update album", http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
|
||||
l.Debug().Msg("UpdateAlbumHandler: Successfully updated album")
|
||||
|
||||
w.WriteHeader(http.StatusOK)
|
||||
}
|
||||
}
|
||||
|
|
@ -88,6 +88,7 @@ func bindRoutes(
|
|||
r.Post("/artists/primary", handlers.SetPrimaryArtistHandler(db))
|
||||
r.Delete("/album", handlers.DeleteAlbumHandler(db))
|
||||
r.Delete("/track", handlers.DeleteTrackHandler(db))
|
||||
r.Patch("/track", handlers.UpdateTrackHandler(db))
|
||||
r.Post("/listen", handlers.SubmitListenWithIDHandler(db))
|
||||
r.Delete("/listen", handlers.DeleteListenHandler(db))
|
||||
r.Post("/aliases", handlers.CreateAliasHandler(db))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue