diff --git a/internal/feedback/handler.go b/internal/feedback/handler.go index 81bb12a..4053dd3 100644 --- a/internal/feedback/handler.go +++ b/internal/feedback/handler.go @@ -1,6 +1,7 @@ package feedback import ( + "errors" "tm/internal/customer" "tm/internal/user" "tm/pkg/logger" @@ -97,10 +98,10 @@ func (h *Handler) Get(c echo.Context) error { feedback, err := h.service.Get(c.Request().Context(), feedbackID) if err != nil { - if err == ErrFeedbackNotFound { + if errors.Is(err, ErrFeedbackNotFound) { return response.NotFound(c, "Feedback not found") } - if err == ErrFeedbackDeleted { + if errors.Is(err, ErrFeedbackDeleted) { return response.NotFound(c, "Feedback has been deleted") } return response.InternalServerError(c, "Failed to retrieve feedback") @@ -262,7 +263,10 @@ func (h *Handler) PublicGet(c echo.Context) error { feedback, err := h.service.Get(c.Request().Context(), feedbackID) if err != nil { - return response.BadRequest(c, "Failed to get feedback", "") + if errors.Is(err, ErrFeedbackNotFound) { + return response.NotFound(c, "Feedback not found") + } + return response.InternalServerError(c, "Failed to get feedback") } return response.Success(c, feedback, "Feedback retrieved successfully") @@ -294,7 +298,10 @@ func (h *Handler) PublicGetByTenderID(c echo.Context) error { feedback, err := h.service.GetByTenderIDForCustomer(c.Request().Context(), tenderID, customerID) if err != nil { - return response.BadRequest(c, "Failed to get feedback", "") + if errors.Is(err, ErrFeedbackNotFound) { + return response.NotFound(c, "Feedback not found") + } + return response.InternalServerError(c, "Failed to get feedback") } return response.Success(c, feedback, "Feedback retrieved successfully") diff --git a/internal/feedback/repository.go b/internal/feedback/repository.go index d61f9f4..5eda72a 100644 --- a/internal/feedback/repository.go +++ b/internal/feedback/repository.go @@ -2,6 +2,7 @@ package feedback import ( "context" + "errors" "time" "tm/pkg/logger" orm "tm/pkg/mongo" @@ -121,6 +122,9 @@ func (r *feedbackRepository) Update(ctx context.Context, feedback *Feedback) err func (r *feedbackRepository) GetByID(ctx context.Context, id string) (*Feedback, error) { feedback, err := r.repo.FindByID(ctx, id) if err != nil { + if errors.Is(err, orm.ErrDocumentNotFound) { + return nil, ErrFeedbackNotFound + } r.logger.Error("Failed to get feedback by ID", map[string]interface{}{ "feedback_id": id, "error": err.Error(), @@ -137,6 +141,9 @@ func (r *feedbackRepository) GetByCompanyID(ctx context.Context, companyID strin result, err := r.repo.FindOne(ctx, filter) if err != nil { + if errors.Is(err, orm.ErrDocumentNotFound) { + return nil, ErrFeedbackNotFound + } r.logger.Error("Failed to get feedback by company ID and tender ID", map[string]interface{}{ "company_id": companyID, "tender_id": tenderID, @@ -171,6 +178,9 @@ func (r *feedbackRepository) GetByTenderID(ctx context.Context, tenderID, compan result, err := r.repo.FindOne(ctx, filter) if err != nil { + if errors.Is(err, orm.ErrDocumentNotFound) { + return nil, ErrFeedbackNotFound + } r.logger.Error("Failed to get feedback by tender ID and company ID", map[string]interface{}{ "tender_id": tenderID, "company_id": companyID, diff --git a/internal/feedback/service.go b/internal/feedback/service.go index 4201786..5b8facf 100644 --- a/internal/feedback/service.go +++ b/internal/feedback/service.go @@ -2,6 +2,7 @@ package feedback import ( "context" + "errors" "tm/internal/company" "tm/internal/tender" "tm/pkg/logger" @@ -168,10 +169,13 @@ func (s *feedbackService) Delete(ctx context.Context, id string) error { func (s *feedbackService) GetByTenderID(ctx context.Context, tenderID, companyID string) (*FeedbackResponse, error) { feedback, err := s.feedbackRepo.GetByTenderID(ctx, tenderID, companyID) if err != nil { - s.logger.Error("Failed to get feedback by tender ID", map[string]interface{}{ - "tender_id": tenderID, - "error": err.Error(), - }) + if !errors.Is(err, ErrFeedbackNotFound) { + s.logger.Error("Failed to get feedback by tender ID", map[string]interface{}{ + "tender_id": tenderID, + "company_id": companyID, + "error": err.Error(), + }) + } return nil, err }