mirror of
https://github.com/hay-kot/homebox.git
synced 2025-08-03 16:20:27 +00:00
more route cleanup
This commit is contained in:
parent
430c503287
commit
ad0cf43aca
5 changed files with 24 additions and 20 deletions
|
@ -9,12 +9,21 @@ import (
|
||||||
"github.com/rs/zerolog/log"
|
"github.com/rs/zerolog/log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (ctrl *V1Controller) routeID(w http.ResponseWriter, r *http.Request) (uuid.UUID, error) {
|
// routeID extracts the ID from the request URL. If the ID is not in a valid
|
||||||
ID, err := uuid.Parse(chi.URLParam(r, "id"))
|
// format, an error is returned. If a error is returned, it can be directly returned
|
||||||
|
// from the handler. the validate.ErrInvalidID error is known by the error middleware
|
||||||
|
// and will be handled accordingly.
|
||||||
|
//
|
||||||
|
// Example: /api/v1/ac614db5-d8b8-4659-9b14-6e913a6eb18a -> uuid.UUID{ac614db5-d8b8-4659-9b14-6e913a6eb18a}
|
||||||
|
func (ctrl *V1Controller) routeID(r *http.Request) (uuid.UUID, error) {
|
||||||
|
return ctrl.routeUUID(r, "id")
|
||||||
|
}
|
||||||
|
|
||||||
|
func (ctrl *V1Controller) routeUUID(r *http.Request, key string) (uuid.UUID, error) {
|
||||||
|
ID, err := uuid.Parse(chi.URLParam(r, key))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Err(err).Msg("failed to parse id")
|
log.Err(err).Msg("failed to parse id")
|
||||||
return uuid.Nil, validate.ErrInvalidID
|
return uuid.Nil, validate.ErrInvalidID
|
||||||
}
|
}
|
||||||
|
|
||||||
return ID, nil
|
return ID, nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -137,7 +137,7 @@ func (ctrl *V1Controller) HandleItemUpdate() server.HandlerFunc {
|
||||||
func (ctrl *V1Controller) handleItemsGeneral() server.HandlerFunc {
|
func (ctrl *V1Controller) handleItemsGeneral() server.HandlerFunc {
|
||||||
return func(w http.ResponseWriter, r *http.Request) error {
|
return func(w http.ResponseWriter, r *http.Request) error {
|
||||||
ctx := services.NewContext(r.Context())
|
ctx := services.NewContext(r.Context())
|
||||||
ID, err := ctrl.routeID(w, r)
|
ID, err := ctrl.routeID(r)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,8 +5,6 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
"github.com/go-chi/chi/v5"
|
|
||||||
"github.com/google/uuid"
|
|
||||||
"github.com/hay-kot/homebox/backend/ent/attachment"
|
"github.com/hay-kot/homebox/backend/ent/attachment"
|
||||||
"github.com/hay-kot/homebox/backend/internal/repo"
|
"github.com/hay-kot/homebox/backend/internal/repo"
|
||||||
"github.com/hay-kot/homebox/backend/internal/services"
|
"github.com/hay-kot/homebox/backend/internal/services"
|
||||||
|
@ -71,7 +69,7 @@ func (ctrl *V1Controller) HandleItemAttachmentCreate() server.HandlerFunc {
|
||||||
attachmentType = attachment.TypeAttachment.String()
|
attachmentType = attachment.TypeAttachment.String()
|
||||||
}
|
}
|
||||||
|
|
||||||
id, err := ctrl.routeID(w, r)
|
id, err := ctrl.routeID(r)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -161,36 +159,33 @@ func (ctrl *V1Controller) HandleItemAttachmentUpdate() server.HandlerFunc {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ctrl *V1Controller) handleItemAttachmentsHandler(w http.ResponseWriter, r *http.Request) error {
|
func (ctrl *V1Controller) handleItemAttachmentsHandler(w http.ResponseWriter, r *http.Request) error {
|
||||||
ID, err := ctrl.routeID(w, r)
|
ID, err := ctrl.routeID(r)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
attachmentId, err := uuid.Parse(chi.URLParam(r, "attachment_id"))
|
attachmentID, err := ctrl.routeUUID(r, "attachment_id")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Err(err).Msg("failed to parse attachment_id param")
|
return err
|
||||||
return validate.NewRequestError(err, http.StatusBadRequest)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx := services.NewContext(r.Context())
|
ctx := services.NewContext(r.Context())
|
||||||
|
|
||||||
switch r.Method {
|
switch r.Method {
|
||||||
|
|
||||||
// Token Handler
|
// Token Handler
|
||||||
case http.MethodGet:
|
case http.MethodGet:
|
||||||
token, err := ctrl.svc.Items.AttachmentToken(ctx, ID, 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:
|
||||||
log.Err(err).
|
log.Err(err).
|
||||||
Str("id", attachmentId.String()).
|
Str("id", attachmentID.String()).
|
||||||
Msg("failed to find attachment with id")
|
Msg("failed to find attachment with id")
|
||||||
|
|
||||||
return validate.NewRequestError(err, http.StatusNotFound)
|
return validate.NewRequestError(err, http.StatusNotFound)
|
||||||
|
|
||||||
case services.ErrFileNotFound:
|
case services.ErrFileNotFound:
|
||||||
log.Err(err).
|
log.Err(err).
|
||||||
Str("id", attachmentId.String()).
|
Str("id", attachmentID.String()).
|
||||||
Msg("failed to find file path for attachment with id")
|
Msg("failed to find file path for attachment with id")
|
||||||
log.Warn().Msg("attachment with no file path removed from database")
|
log.Warn().Msg("attachment with no file path removed from database")
|
||||||
|
|
||||||
|
@ -206,7 +201,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(), ctx.GID, ID, 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")
|
||||||
return validate.NewRequestError(err, http.StatusInternalServerError)
|
return validate.NewRequestError(err, http.StatusInternalServerError)
|
||||||
|
@ -223,7 +218,7 @@ func (ctrl *V1Controller) handleItemAttachmentsHandler(w http.ResponseWriter, r
|
||||||
return validate.NewRequestError(err, http.StatusBadRequest)
|
return validate.NewRequestError(err, http.StatusBadRequest)
|
||||||
}
|
}
|
||||||
|
|
||||||
attachment.ID = attachmentId
|
attachment.ID = attachmentID
|
||||||
val, err := ctrl.svc.Items.AttachmentUpdate(ctx, ID, &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")
|
||||||
|
|
|
@ -96,7 +96,7 @@ func (ctrl *V1Controller) HandleLabelUpdate() server.HandlerFunc {
|
||||||
func (ctrl *V1Controller) handleLabelsGeneral() server.HandlerFunc {
|
func (ctrl *V1Controller) handleLabelsGeneral() server.HandlerFunc {
|
||||||
return func(w http.ResponseWriter, r *http.Request) error {
|
return func(w http.ResponseWriter, r *http.Request) error {
|
||||||
ctx := services.NewContext(r.Context())
|
ctx := services.NewContext(r.Context())
|
||||||
ID, err := ctrl.routeID(w, r)
|
ID, err := ctrl.routeID(r)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
|
@ -98,7 +98,7 @@ func (ctrl *V1Controller) HandleLocationUpdate() server.HandlerFunc {
|
||||||
func (ctrl *V1Controller) handleLocationGeneral() server.HandlerFunc {
|
func (ctrl *V1Controller) handleLocationGeneral() server.HandlerFunc {
|
||||||
return func(w http.ResponseWriter, r *http.Request) error {
|
return func(w http.ResponseWriter, r *http.Request) error {
|
||||||
ctx := services.NewContext(r.Context())
|
ctx := services.NewContext(r.Context())
|
||||||
ID, err := ctrl.routeID(w, r)
|
ID, err := ctrl.routeID(r)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue