use servemux *properly* this time; better error handling for DB gets
This commit is contained in:
parent
a33e6717e0
commit
b7c1d85830
16 changed files with 234 additions and 288 deletions
|
|
@ -4,7 +4,6 @@ import (
|
|||
"fmt"
|
||||
"net/http"
|
||||
"os"
|
||||
"strings"
|
||||
|
||||
"arimelody-web/admin/core"
|
||||
"arimelody-web/admin/templates"
|
||||
|
|
@ -47,14 +46,14 @@ func serveRelease(app *model.AppState, releaseID string) http.Handler {
|
|||
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
release, err := controller.GetRelease(app.DB, releaseID, true)
|
||||
if err != nil {
|
||||
if strings.Contains(err.Error(), "no rows") {
|
||||
http.NotFound(w, r)
|
||||
return
|
||||
}
|
||||
fmt.Fprintf(os.Stderr, "WARN: Failed to fetch full release data for %s: %s\n", releaseID, err)
|
||||
http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
if release == nil {
|
||||
http.NotFound(w, r)
|
||||
return
|
||||
}
|
||||
|
||||
session := r.Context().Value("session").(*model.Session)
|
||||
|
||||
|
|
@ -80,26 +79,26 @@ func serveEditRelease(app *model.AppState, releaseID string) http.Handler {
|
|||
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
release, err := controller.GetRelease(app.DB, releaseID, true)
|
||||
if err != nil {
|
||||
if strings.Contains(err.Error(), "no rows") {
|
||||
http.NotFound(w, r)
|
||||
return
|
||||
}
|
||||
fmt.Fprintf(os.Stderr, "WARN: Failed to fetch full release data for %s: %s\n", releaseID, err)
|
||||
http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
if release == nil {
|
||||
http.NotFound(w, r)
|
||||
return
|
||||
}
|
||||
|
||||
mux := http.NewServeMux()
|
||||
|
||||
mux.Handle("/music/releases/{id}/editcredits", serveEditCredits(release))
|
||||
mux.Handle("/music/releases/{id}/addcredit", serveAddCredit(app, release))
|
||||
mux.Handle("/music/releases/{id}/newcredit", serveNewCredit(app))
|
||||
mux.Handle("GET /music/releases/{id}/editcredits", serveEditCredits(release))
|
||||
mux.Handle("GET /music/releases/{id}/addcredit", serveAddCredit(app, release))
|
||||
mux.Handle("GET /music/releases/{id}/newcredit/{artistID}", serveNewCredit(app))
|
||||
|
||||
mux.Handle("/music/releases/{id}/editlinks", serveEditLinks(release))
|
||||
mux.Handle("GET /music/releases/{id}/editlinks", serveEditLinks(release))
|
||||
|
||||
mux.Handle("/music/releases/{id}/edittracks", serveEditTracks(release))
|
||||
mux.Handle("/music/releases/{id}/addtrack", serveAddTrack(app, release))
|
||||
mux.Handle("/music/releases/{id}/newtrack", serveNewTrack(app))
|
||||
mux.Handle("GET /music/releases/{id}/edittracks", serveEditTracks(release))
|
||||
mux.Handle("GET /music/releases/{id}/addtrack", serveAddTrack(app, release))
|
||||
mux.Handle("GET /music/releases/{id}/newtrack/{trackID}", serveNewTrack(app))
|
||||
|
||||
mux.ServeHTTP(w, r)
|
||||
})
|
||||
|
|
@ -144,8 +143,7 @@ func serveAddCredit(app *model.AppState, release *model.Release) http.Handler {
|
|||
|
||||
func serveNewCredit(app *model.AppState) http.Handler {
|
||||
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
split := strings.Split(r.URL.Path, "/")
|
||||
artistID := split[len(split) - 1]
|
||||
artistID := r.PathValue("artistID")
|
||||
artist, err := controller.GetArtist(app.DB, artistID)
|
||||
if err != nil {
|
||||
fmt.Fprintf(os.Stderr, "WARN: Failed to fetch artist %s: %s\n", artistID, err)
|
||||
|
|
@ -221,8 +219,7 @@ func serveAddTrack(app *model.AppState, release *model.Release) http.Handler {
|
|||
|
||||
func serveNewTrack(app *model.AppState) http.Handler {
|
||||
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
split := strings.Split(r.URL.Path, "/")
|
||||
trackID := split[len(split) - 1]
|
||||
trackID := r.PathValue("trackID")
|
||||
track, err := controller.GetTrack(app.DB, trackID)
|
||||
if err != nil {
|
||||
fmt.Fprintf(os.Stderr, "WARN: Failed to fetch track %s: %s\n", trackID, err)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue