feat(api): route track-list reads through user-context quarantine filter
This commit is contained in:
@@ -7,6 +7,7 @@ import (
|
||||
"github.com/go-chi/chi/v5"
|
||||
"github.com/jackc/pgx/v5"
|
||||
|
||||
"git.fabledsword.com/bvandeusen/minstrel/internal/auth"
|
||||
"git.fabledsword.com/bvandeusen/minstrel/internal/db/dbq"
|
||||
)
|
||||
|
||||
@@ -71,7 +72,14 @@ func (h *handlers) handleGetAlbum(w http.ResponseWriter, r *http.Request) {
|
||||
writeErr(w, http.StatusInternalServerError, "server_error", "lookup failed")
|
||||
return
|
||||
}
|
||||
tracks, err := q.ListTracksByAlbum(r.Context(), id)
|
||||
var tracks []dbq.Track
|
||||
if user, ok := auth.UserFromContext(r.Context()); ok {
|
||||
tracks, err = q.ListTracksByAlbumForUser(r.Context(), dbq.ListTracksByAlbumForUserParams{
|
||||
AlbumID: id, UserID: user.ID,
|
||||
})
|
||||
} else {
|
||||
tracks, err = q.ListTracksByAlbum(r.Context(), id)
|
||||
}
|
||||
if err != nil {
|
||||
h.logger.Error("api: list tracks failed", "err", err)
|
||||
writeErr(w, http.StatusInternalServerError, "server_error", "lookup failed")
|
||||
|
||||
+19
-4
@@ -7,6 +7,7 @@ import (
|
||||
|
||||
"github.com/jackc/pgx/v5/pgtype"
|
||||
|
||||
"git.fabledsword.com/bvandeusen/minstrel/internal/auth"
|
||||
"git.fabledsword.com/bvandeusen/minstrel/internal/db/dbq"
|
||||
)
|
||||
|
||||
@@ -74,15 +75,29 @@ func (h *handlers) handleSearch(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
|
||||
tracks, err := dbQ.SearchTracks(r.Context(), dbq.SearchTracksParams{
|
||||
Column1: needle, Limit: int32(limit), Offset: int32(offset),
|
||||
})
|
||||
var tracks []dbq.Track
|
||||
if user, ok := auth.UserFromContext(r.Context()); ok {
|
||||
tracks, err = dbQ.SearchTracksForUser(r.Context(), dbq.SearchTracksForUserParams{
|
||||
Column1: needle, UserID: user.ID, Limit: int32(limit), Offset: int32(offset),
|
||||
})
|
||||
} else {
|
||||
tracks, err = dbQ.SearchTracks(r.Context(), dbq.SearchTracksParams{
|
||||
Column1: needle, Limit: int32(limit), Offset: int32(offset),
|
||||
})
|
||||
}
|
||||
if err != nil {
|
||||
h.logger.Error("api: search tracks failed", "err", err)
|
||||
writeErr(w, http.StatusInternalServerError, "server_error", "search failed")
|
||||
return
|
||||
}
|
||||
trackTotal, err := dbQ.CountTracksMatching(r.Context(), q)
|
||||
var trackTotal int64
|
||||
if user, ok := auth.UserFromContext(r.Context()); ok {
|
||||
trackTotal, err = dbQ.CountTracksMatchingForUser(r.Context(), dbq.CountTracksMatchingForUserParams{
|
||||
Column1: q, UserID: user.ID,
|
||||
})
|
||||
} else {
|
||||
trackTotal, err = dbQ.CountTracksMatching(r.Context(), q)
|
||||
}
|
||||
if err != nil {
|
||||
h.logger.Error("api: count tracks matching failed", "err", err)
|
||||
writeErr(w, http.StatusInternalServerError, "server_error", "search failed")
|
||||
|
||||
Reference in New Issue
Block a user