remove old partial

This commit is contained in:
Hayden 2022-10-16 17:44:39 -08:00
parent bd06d8fb96
commit e78bbd8027
3 changed files with 19 additions and 40 deletions

View file

@ -5,34 +5,10 @@ import (
"github.com/go-chi/chi/v5" "github.com/go-chi/chi/v5"
"github.com/google/uuid" "github.com/google/uuid"
"github.com/hay-kot/homebox/backend/internal/repo"
"github.com/hay-kot/homebox/backend/internal/services"
"github.com/hay-kot/homebox/backend/pkgs/server" "github.com/hay-kot/homebox/backend/pkgs/server"
"github.com/rs/zerolog/log" "github.com/rs/zerolog/log"
) )
/*
This is where we put partial snippets/functions for actions that are commonly
used within the controller class. This _hopefully_ helps with code duplication
and makes it a little more consistent when error handling and logging.
*/
// partialParseIdAndUser parses the ID from the requests URL and pulls the user
// from the context. If either of these fail, it will return an error. When an error
// occurs it will also write the error to the response. As such, if an error is returned
// from this function you can return immediately without writing to the response.
func (ctrl *V1Controller) partialParseIdAndUser(w http.ResponseWriter, r *http.Request) (uuid.UUID, *repo.UserOut, error) {
uid, err := uuid.Parse(chi.URLParam(r, "id"))
if err != nil {
log.Err(err).Msg("failed to parse id")
server.RespondError(w, http.StatusBadRequest, err)
return uuid.Nil, &repo.UserOut{}, err
}
user := services.UseUserCtx(r.Context())
return uid, user, nil
}
func (ctrl *V1Controller) partialRouteID(w http.ResponseWriter, r *http.Request) (uuid.UUID, error) { func (ctrl *V1Controller) partialRouteID(w http.ResponseWriter, r *http.Request) (uuid.UUID, error) {
ID, err := uuid.Parse(chi.URLParam(r, "id")) ID, err := uuid.Parse(chi.URLParam(r, "id"))
if err != nil { if err != nil {

View file

@ -72,7 +72,7 @@ func (ctrl *V1Controller) HandleItemAttachmentCreate() http.HandlerFunc {
attachmentType = attachment.TypeAttachment.String() attachmentType = attachment.TypeAttachment.String()
} }
id, _, err := ctrl.partialParseIdAndUser(w, r) id, err := ctrl.partialRouteID(w, r)
if err != nil { if err != nil {
return return
} }
@ -163,7 +163,7 @@ func (ctrl *V1Controller) HandleItemAttachmentUpdate() http.HandlerFunc {
} }
func (ctrl *V1Controller) handleItemAttachmentsHandler(w http.ResponseWriter, r *http.Request) { func (ctrl *V1Controller) handleItemAttachmentsHandler(w http.ResponseWriter, r *http.Request) {
uid, user, err := ctrl.partialParseIdAndUser(w, r) ID, err := ctrl.partialRouteID(w, r)
if err != nil { if err != nil {
return return
} }
@ -181,7 +181,7 @@ func (ctrl *V1Controller) handleItemAttachmentsHandler(w http.ResponseWriter, r
// Token Handler // Token Handler
case http.MethodGet: case http.MethodGet:
token, err := ctrl.svc.Items.AttachmentToken(ctx, uid, attachmentId) token, err := ctrl.svc.Items.AttachmentToken(ctx, ID, attachmentId)
if err != nil { if err != nil {
switch err { switch err {
case services.ErrNotFound: case services.ErrNotFound:
@ -210,7 +210,7 @@ func (ctrl *V1Controller) handleItemAttachmentsHandler(w http.ResponseWriter, r
// Delete Attachment Handler // Delete Attachment Handler
case http.MethodDelete: case http.MethodDelete:
err = ctrl.svc.Items.AttachmentDelete(r.Context(), user.GroupID, uid, attachmentId) err = ctrl.svc.Items.AttachmentDelete(r.Context(), ctx.GID, ID, attachmentId)
if err != nil { if err != nil {
log.Err(err).Msg("failed to delete attachment") log.Err(err).Msg("failed to delete attachment")
server.RespondServerError(w) server.RespondServerError(w)
@ -230,7 +230,7 @@ func (ctrl *V1Controller) handleItemAttachmentsHandler(w http.ResponseWriter, r
} }
attachment.ID = attachmentId attachment.ID = attachmentId
val, err := ctrl.svc.Items.AttachmentUpdate(ctx, uid, &attachment) val, err := ctrl.svc.Items.AttachmentUpdate(ctx, ID, &attachment)
if err != nil { if err != nil {
log.Err(err).Msg("failed to delete attachment") log.Err(err).Msg("failed to delete attachment")
server.RespondServerError(w) server.RespondServerError(w)

View file

@ -70,12 +70,13 @@ func (ctrl *V1Controller) HandleLocationCreate() http.HandlerFunc {
// @Security Bearer // @Security Bearer
func (ctrl *V1Controller) HandleLocationDelete() http.HandlerFunc { func (ctrl *V1Controller) HandleLocationDelete() http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) { return func(w http.ResponseWriter, r *http.Request) {
uid, user, err := ctrl.partialParseIdAndUser(w, r) ctx := services.NewContext(r.Context())
ID, err := ctrl.partialRouteID(w, r)
if err != nil { if err != nil {
return return
} }
err = ctrl.svc.Location.Delete(r.Context(), user.GroupID, uid) err = ctrl.svc.Location.Delete(r.Context(), ctx.GID, ID)
if err != nil { if err != nil {
log.Err(err).Msg("failed to delete location") log.Err(err).Msg("failed to delete location")
server.RespondServerError(w) server.RespondServerError(w)
@ -95,25 +96,26 @@ func (ctrl *V1Controller) HandleLocationDelete() http.HandlerFunc {
// @Security Bearer // @Security Bearer
func (ctrl *V1Controller) HandleLocationGet() http.HandlerFunc { func (ctrl *V1Controller) HandleLocationGet() http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) { return func(w http.ResponseWriter, r *http.Request) {
uid, user, err := ctrl.partialParseIdAndUser(w, r) ctx := services.NewContext(r.Context())
ID, err := ctrl.partialRouteID(w, r)
if err != nil { if err != nil {
return return
} }
location, err := ctrl.svc.Location.GetOne(r.Context(), user.GroupID, uid) location, err := ctrl.svc.Location.GetOne(r.Context(), ctx.GID, ID)
if err != nil { if err != nil {
if ent.IsNotFound(err) { if ent.IsNotFound(err) {
log.Err(err). log.Err(err).
Str("id", uid.String()). Str("id", ID.String()).
Str("gid", user.GroupID.String()). Str("gid", ctx.GID.String()).
Msg("location not found") Msg("location not found")
server.RespondError(w, http.StatusNotFound, err) server.RespondError(w, http.StatusNotFound, err)
return return
} }
log.Err(err). log.Err(err).
Str("id", uid.String()). Str("id", ID.String()).
Str("gid", user.GroupID.String()). Str("gid", ctx.GID.String()).
Msg("failed to get location") Msg("failed to get location")
server.RespondServerError(w) server.RespondServerError(w)
return return
@ -139,14 +141,15 @@ func (ctrl *V1Controller) HandleLocationUpdate() http.HandlerFunc {
return return
} }
uid, user, err := ctrl.partialParseIdAndUser(w, r) ctx := services.NewContext(r.Context())
ID, err := ctrl.partialRouteID(w, r)
if err != nil { if err != nil {
return return
} }
body.ID = uid body.ID = ID
result, err := ctrl.svc.Location.Update(r.Context(), user.GroupID, body) result, err := ctrl.svc.Location.Update(r.Context(), ctx.GID, body)
if err != nil { if err != nil {
log.Err(err).Msg("failed to update location") log.Err(err).Msg("failed to update location")
server.RespondServerError(w) server.RespondServerError(w)