···324324325325 err = controller.UpdateReleaseTracks(app.DB, release.ID, trackIDs)
326326 if err != nil {
327327+ if strings.Contains(err.Error(), "duplicate key") {
328328+ http.Error(w, "Release cannot have duplicate tracks", http.StatusBadRequest)
329329+ return
330330+ }
327331 if strings.Contains(err.Error(), "no rows") {
328332 http.NotFound(w, r)
329333 return
···366370 err = controller.UpdateReleaseCredits(app.DB, release.ID, credits)
367371 if err != nil {
368372 if strings.Contains(err.Error(), "duplicate key") {
369369- http.Error(w, "Artists may only be credited once\n", http.StatusBadRequest)
373373+ http.Error(w, "Artists may only be credited once", http.StatusBadRequest)
370374 return
371375 }
372376 if strings.Contains(err.Error(), "no rows") {
373377 http.NotFound(w, r)
374378 return
375379 }
376376- fmt.Printf("WARN: Failed to update links for %s: %s\n", release.ID, err)
380380+ fmt.Printf("WARN: Failed to update credits for %s: %s\n", release.ID, err)
377381 http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError)
378382 }
379383···394398395399 err = controller.UpdateReleaseLinks(app.DB, release.ID, links)
396400 if err != nil {
401401+ if strings.Contains(err.Error(), "duplicate key") {
402402+ http.Error(w, "Release cannot have duplicate link names", http.StatusBadRequest)
403403+ return
404404+ }
397405 if strings.Contains(err.Error(), "no rows") {
398406 http.NotFound(w, r)
399407 return
-5
model/track.go
···2424func (track Track) GetLyricsHTML() template.HTML {
2525 return template.HTML(strings.ReplaceAll(track.Lyrics, "\n", "<br>"))
2626}
2727-2828-// this function is stupid and i hate that i need it
2929-func (track Track) Add(a int, b int) int {
3030- return a + b
3131-}