feedback error handling
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
package feedback
|
package feedback
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
"tm/internal/customer"
|
"tm/internal/customer"
|
||||||
"tm/internal/user"
|
"tm/internal/user"
|
||||||
"tm/pkg/logger"
|
"tm/pkg/logger"
|
||||||
@@ -97,10 +98,10 @@ func (h *Handler) Get(c echo.Context) error {
|
|||||||
|
|
||||||
feedback, err := h.service.Get(c.Request().Context(), feedbackID)
|
feedback, err := h.service.Get(c.Request().Context(), feedbackID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if err == ErrFeedbackNotFound {
|
if errors.Is(err, ErrFeedbackNotFound) {
|
||||||
return response.NotFound(c, "Feedback not found")
|
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.NotFound(c, "Feedback has been deleted")
|
||||||
}
|
}
|
||||||
return response.InternalServerError(c, "Failed to retrieve feedback")
|
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)
|
feedback, err := h.service.Get(c.Request().Context(), feedbackID)
|
||||||
if err != nil {
|
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")
|
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)
|
companyID, err := user.GetCompanyIDFromContext(c)
|
||||||
if err != nil {
|
if err != nil || companyID == "" {
|
||||||
return response.BadRequest(c, "Company ID required", "User must be associated with a company")
|
return response.Unauthorized(c, "User must be associated with a company")
|
||||||
}
|
}
|
||||||
|
|
||||||
feedback, err := h.service.GetByTenderID(c.Request().Context(), tenderID, companyID)
|
feedback, err := h.service.GetByTenderID(c.Request().Context(), tenderID, companyID)
|
||||||
if err != nil {
|
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")
|
return response.Success(c, feedback, "Feedback retrieved successfully")
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package feedback
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"errors"
|
||||||
"time"
|
"time"
|
||||||
"tm/pkg/logger"
|
"tm/pkg/logger"
|
||||||
orm "tm/pkg/mongo"
|
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) {
|
func (r *feedbackRepository) GetByID(ctx context.Context, id string) (*Feedback, error) {
|
||||||
feedback, err := r.repo.FindByID(ctx, id)
|
feedback, err := r.repo.FindByID(ctx, id)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
if errors.Is(err, orm.ErrDocumentNotFound) {
|
||||||
|
return nil, ErrFeedbackNotFound
|
||||||
|
}
|
||||||
r.logger.Error("Failed to get feedback by ID", map[string]interface{}{
|
r.logger.Error("Failed to get feedback by ID", map[string]interface{}{
|
||||||
"feedback_id": id,
|
"feedback_id": id,
|
||||||
"error": err.Error(),
|
"error": err.Error(),
|
||||||
@@ -129,6 +133,9 @@ func (r *feedbackRepository) GetByCompanyID(ctx context.Context, companyID strin
|
|||||||
|
|
||||||
result, err := r.repo.FindOne(ctx, filter)
|
result, err := r.repo.FindOne(ctx, filter)
|
||||||
if err != nil {
|
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{}{
|
r.logger.Error("Failed to get feedback by company ID and tender ID", map[string]interface{}{
|
||||||
"company_id": companyID,
|
"company_id": companyID,
|
||||||
"tender_id": tenderID,
|
"tender_id": tenderID,
|
||||||
@@ -146,6 +153,9 @@ func (r *feedbackRepository) GetByTenderID(ctx context.Context, tenderID, compan
|
|||||||
|
|
||||||
result, err := r.repo.FindOne(ctx, filter)
|
result, err := r.repo.FindOne(ctx, filter)
|
||||||
if err != nil {
|
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{}{
|
r.logger.Error("Failed to get feedback by tender ID and company ID", map[string]interface{}{
|
||||||
"tender_id": tenderID,
|
"tender_id": tenderID,
|
||||||
"company_id": companyID,
|
"company_id": companyID,
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package feedback
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"errors"
|
||||||
"tm/internal/company"
|
"tm/internal/company"
|
||||||
"tm/internal/tender"
|
"tm/internal/tender"
|
||||||
"tm/pkg/logger"
|
"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) {
|
func (s *feedbackService) GetByTenderID(ctx context.Context, tenderID, companyID string) (*FeedbackResponse, error) {
|
||||||
feedback, err := s.feedbackRepo.GetByTenderID(ctx, tenderID, companyID)
|
feedback, err := s.feedbackRepo.GetByTenderID(ctx, tenderID, companyID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
if !errors.Is(err, ErrFeedbackNotFound) {
|
||||||
s.logger.Error("Failed to get feedback by tender ID", map[string]interface{}{
|
s.logger.Error("Failed to get feedback by tender ID", map[string]interface{}{
|
||||||
"tender_id": tenderID,
|
"tender_id": tenderID,
|
||||||
|
"company_id": companyID,
|
||||||
"error": err.Error(),
|
"error": err.Error(),
|
||||||
})
|
})
|
||||||
|
}
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user