feat: create specific price system and adapt product queries
This commit is contained in:
@@ -62,6 +62,12 @@ var (
|
||||
ErrUserHasNoSuchCart = errors.New("user does not have cart with given id")
|
||||
ErrProductOrItsVariationDoesNotExist = errors.New("product or its variation with given ids does not exist")
|
||||
|
||||
// Typed errors for price reduction handler
|
||||
ErrInvalidReductionType = errors.New("invalid reduction type: must be 'amount' or 'percentage'")
|
||||
ErrPercentageRequired = errors.New("percentage_reduction required when reduction_type is percentage")
|
||||
ErrPriceRequired = errors.New("price required when reduction_type is amount")
|
||||
ErrSpecificPriceNotFound = errors.New("price reduction not found")
|
||||
|
||||
// Typed errors for data parsing
|
||||
ErrJSONBody = errors.New("invalid JSON body")
|
||||
)
|
||||
@@ -171,6 +177,15 @@ func GetErrorCode(c fiber.Ctx, err error) string {
|
||||
case errors.Is(err, ErrProductOrItsVariationDoesNotExist):
|
||||
return i18n.T_(c, "error.product_or_its_variation_does_not_exist")
|
||||
|
||||
case errors.Is(err, ErrInvalidReductionType):
|
||||
return i18n.T_(c, "error.invalid_reduction_type")
|
||||
case errors.Is(err, ErrPercentageRequired):
|
||||
return i18n.T_(c, "error.percentage_required")
|
||||
case errors.Is(err, ErrPriceRequired):
|
||||
return i18n.T_(c, "error.price_required")
|
||||
case errors.Is(err, ErrSpecificPriceNotFound):
|
||||
return i18n.T_(c, "error.price_reduction_not_found")
|
||||
|
||||
case errors.Is(err, ErrJSONBody):
|
||||
return i18n.T_(c, "error.err_json_body")
|
||||
|
||||
@@ -219,8 +234,13 @@ func GetErrorStatus(err error) int {
|
||||
errors.Is(err, ErrMaxAmtOfCartsReached),
|
||||
errors.Is(err, ErrUserHasNoSuchCart),
|
||||
errors.Is(err, ErrProductOrItsVariationDoesNotExist),
|
||||
errors.Is(err, ErrInvalidReductionType),
|
||||
errors.Is(err, ErrPercentageRequired),
|
||||
errors.Is(err, ErrPriceRequired),
|
||||
errors.Is(err, ErrJSONBody):
|
||||
return fiber.StatusBadRequest
|
||||
case errors.Is(err, ErrSpecificPriceNotFound):
|
||||
return fiber.StatusNotFound
|
||||
case errors.Is(err, ErrEmailExists):
|
||||
return fiber.StatusConflict
|
||||
case errors.Is(err, ErrAIResponseFail),
|
||||
|
||||
Reference in New Issue
Block a user