Merge pull request 'feedback error handling' (#26) from TM-571 into develop

Reviewed-on: https://repo.ravanertebat.com/TM/tm_back/pulls/26
Reviewed-by: Hadi Barzegar <barzagarhadi@gmail.com>
This commit is contained in:
m.nazemi
2026-05-31 18:37:43 +03:30
3 changed files with 29 additions and 8 deletions
+11 -4
View File
@@ -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")
+10
View File
@@ -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,
+8 -4
View File
@@ -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
}