refactor(server): final writeErr migration + ErrNotFound aliases (T3c)
This commit is contained in:
+12
-11
@@ -12,6 +12,7 @@ import (
|
||||
"github.com/jackc/pgx/v5"
|
||||
"github.com/jackc/pgx/v5/pgtype"
|
||||
|
||||
"git.fabledsword.com/bvandeusen/minstrel/internal/apierror"
|
||||
"git.fabledsword.com/bvandeusen/minstrel/internal/auth"
|
||||
"git.fabledsword.com/bvandeusen/minstrel/internal/db/dbq"
|
||||
"git.fabledsword.com/bvandeusen/minstrel/internal/recommendation"
|
||||
@@ -31,24 +32,24 @@ type RadioResponse struct {
|
||||
func (h *handlers) handleRadio(w http.ResponseWriter, r *http.Request) {
|
||||
user, ok := auth.UserFromContext(r.Context())
|
||||
if !ok {
|
||||
writeErr(w, http.StatusUnauthorized, "unauthorized", "authentication required")
|
||||
writeErr(w, apierror.ErrUnauthorized)
|
||||
return
|
||||
}
|
||||
raw := strings.TrimSpace(r.URL.Query().Get("seed_track"))
|
||||
if raw == "" {
|
||||
writeErr(w, http.StatusBadRequest, "bad_request", "seed_track is required")
|
||||
writeErr(w, apierror.BadRequest("bad_request", "seed_track is required"))
|
||||
return
|
||||
}
|
||||
seedID, ok := parseUUID(raw)
|
||||
if !ok {
|
||||
writeErr(w, http.StatusBadRequest, "bad_request", "invalid seed_track id")
|
||||
writeErr(w, apierror.BadRequest("bad_request", "invalid seed_track id"))
|
||||
return
|
||||
}
|
||||
limit := h.recCfg.RadioSize
|
||||
if v := r.URL.Query().Get("limit"); v != "" {
|
||||
n, err := strconv.Atoi(v)
|
||||
if err != nil || n < 1 {
|
||||
writeErr(w, http.StatusBadRequest, "bad_request", "invalid limit")
|
||||
writeErr(w, apierror.BadRequest("bad_request", "invalid limit"))
|
||||
return
|
||||
}
|
||||
limit = n
|
||||
@@ -60,23 +61,23 @@ func (h *handlers) handleRadio(w http.ResponseWriter, r *http.Request) {
|
||||
track, err := q.GetTrackByID(r.Context(), seedID)
|
||||
if err != nil {
|
||||
if errors.Is(err, pgx.ErrNoRows) {
|
||||
writeErr(w, http.StatusNotFound, "not_found", "seed_track not found")
|
||||
writeErr(w, apierror.NotFound("seed_track"))
|
||||
return
|
||||
}
|
||||
h.logger.Error("api: get radio seed track failed", "err", err)
|
||||
writeErr(w, http.StatusInternalServerError, "server_error", "lookup failed")
|
||||
writeErr(w, apierror.InternalMsg("lookup failed", err))
|
||||
return
|
||||
}
|
||||
album, err := q.GetAlbumByID(r.Context(), track.AlbumID)
|
||||
if err != nil {
|
||||
h.logger.Error("api: get radio seed album failed", "err", err)
|
||||
writeErr(w, http.StatusInternalServerError, "server_error", "lookup failed")
|
||||
writeErr(w, apierror.InternalMsg("lookup failed", err))
|
||||
return
|
||||
}
|
||||
artist, err := q.GetArtistByID(r.Context(), track.ArtistID)
|
||||
if err != nil {
|
||||
h.logger.Error("api: get radio seed artist failed", "err", err)
|
||||
writeErr(w, http.StatusInternalServerError, "server_error", "lookup failed")
|
||||
writeErr(w, apierror.InternalMsg("lookup failed", err))
|
||||
return
|
||||
}
|
||||
|
||||
@@ -96,7 +97,7 @@ func (h *handlers) handleRadio(w http.ResponseWriter, r *http.Request) {
|
||||
)
|
||||
if err != nil {
|
||||
h.logger.Error("api: radio: load candidates fallback failed", "err", err)
|
||||
writeErr(w, http.StatusInternalServerError, "server_error", "candidate load failed")
|
||||
writeErr(w, apierror.InternalMsg("candidate load failed", err))
|
||||
return
|
||||
}
|
||||
}
|
||||
@@ -118,13 +119,13 @@ func (h *handlers) handleRadio(w http.ResponseWriter, r *http.Request) {
|
||||
al, err := q.GetAlbumByID(r.Context(), p.Track.AlbumID)
|
||||
if err != nil {
|
||||
h.logger.Error("api: radio: resolve album", "err", err)
|
||||
writeErr(w, http.StatusInternalServerError, "server_error", "resolve failed")
|
||||
writeErr(w, apierror.InternalMsg("resolve failed", err))
|
||||
return
|
||||
}
|
||||
ar, err := q.GetArtistByID(r.Context(), p.Track.ArtistID)
|
||||
if err != nil {
|
||||
h.logger.Error("api: radio: resolve artist", "err", err)
|
||||
writeErr(w, http.StatusInternalServerError, "server_error", "resolve failed")
|
||||
writeErr(w, apierror.InternalMsg("resolve failed", err))
|
||||
return
|
||||
}
|
||||
out = append(out, trackRefFrom(p.Track, al.Title, ar.Name))
|
||||
|
||||
Reference in New Issue
Block a user