From 7c484c1cc5d119670089e56bca729b73df73b4d0 Mon Sep 17 00:00:00 2001 From: Christian Heimes Date: Mon, 4 Dec 2023 10:58:37 +0100 Subject: [PATCH] fix: Map ErrRecordNotFound to HTTP 404 GET and DELETE `/domains/:domain_id` were failing with internal server errors when the domain id was unknown. The handler now maps gorm.ErrRecordNotFound to HTTP error 404. Signed-off-by: Christian Heimes --- .../usecase/repository/domain_repository.go | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/internal/usecase/repository/domain_repository.go b/internal/usecase/repository/domain_repository.go index 1d1169fc..03ce8c34 100644 --- a/internal/usecase/repository/domain_repository.go +++ b/internal/usecase/repository/domain_repository.go @@ -239,7 +239,15 @@ func (r *domainRepository) FindByID( if err = db.Model(&model.Domain{}). First(output, "org_id = ? AND domain_uuid = ?", orgID, UUID). Error; err != nil { - return nil, err + if errors.Is(err, gorm.ErrRecordNotFound) { + return nil, internal_errors.NewHTTPErrorF( + http.StatusNotFound, + "unknown domain '%s'", + UUID.String(), + ) + } else { + return nil, err + } } if err = output.FillAndPreload(db); err != nil { return nil, err @@ -261,7 +269,15 @@ func (r *domainRepository) DeleteById( return err } if err = db.First(&data, "org_id = ? AND domain_uuid = ?", orgID, UUID).Count(&count).Error; err != nil { - return err + if errors.Is(err, gorm.ErrRecordNotFound) { + return internal_errors.NewHTTPErrorF( + http.StatusNotFound, + "unknown domain '%s'", + UUID.String(), + ) + } else { + return err + } } if count == 0 { return fmt.Errorf("Register not found")