feedback error handling
This commit is contained in:
@@ -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")
|
||||
@@ -288,13 +292,16 @@ func (h *Handler) PublicGetByTenderID(c echo.Context) error {
|
||||
}
|
||||
|
||||
companyID, err := user.GetCompanyIDFromContext(c)
|
||||
if err != nil {
|
||||
return response.BadRequest(c, "Company ID required", "User must be associated with a company")
|
||||
if err != nil || companyID == "" {
|
||||
return response.Unauthorized(c, "User must be associated with a company")
|
||||
}
|
||||
|
||||
feedback, err := h.service.GetByTenderID(c.Request().Context(), tenderID, companyID)
|
||||
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")
|
||||
|
||||
@@ -2,6 +2,7 @@ package feedback
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"time"
|
||||
"tm/pkg/logger"
|
||||
orm "tm/pkg/mongo"
|
||||
@@ -113,6 +114,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(),
|
||||
@@ -129,6 +133,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,
|
||||
@@ -146,6 +153,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,
|
||||
|
||||
@@ -2,6 +2,7 @@ package feedback
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"tm/internal/company"
|
||||
"tm/internal/tender"
|
||||
"tm/pkg/logger"
|
||||
@@ -165,10 +166,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 {
|
||||
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
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user