refactor and add outlet product table
This commit is contained in:
@@ -0,0 +1,80 @@
|
||||
package validator
|
||||
|
||||
import (
|
||||
"errors"
|
||||
|
||||
"apskel-pos-be/internal/constants"
|
||||
"apskel-pos-be/internal/contract"
|
||||
|
||||
"github.com/google/uuid"
|
||||
)
|
||||
|
||||
type ProductOutletPriceValidator interface {
|
||||
ValidateCreateRequest(req *contract.CreateProductOutletPriceRequest) (error, string)
|
||||
ValidateUpdateRequest(req *contract.UpdateProductOutletPriceRequest) (error, string)
|
||||
ValidateBulkCreateRequest(req *contract.BulkCreateProductOutletPriceRequest) (error, string)
|
||||
}
|
||||
|
||||
type ProductOutletPriceValidatorImpl struct{}
|
||||
|
||||
func NewProductOutletPriceValidator() *ProductOutletPriceValidatorImpl {
|
||||
return &ProductOutletPriceValidatorImpl{}
|
||||
}
|
||||
|
||||
func (v *ProductOutletPriceValidatorImpl) ValidateCreateRequest(req *contract.CreateProductOutletPriceRequest) (error, string) {
|
||||
if req == nil {
|
||||
return errors.New("request body is required"), constants.MissingFieldErrorCode
|
||||
}
|
||||
|
||||
if req.ProductID == uuid.Nil {
|
||||
return errors.New("product_id is required"), constants.MissingFieldErrorCode
|
||||
}
|
||||
|
||||
if req.OutletID == uuid.Nil {
|
||||
return errors.New("outlet_id is required"), constants.MissingFieldErrorCode
|
||||
}
|
||||
|
||||
if req.Price < 0 {
|
||||
return errors.New("price must be non-negative"), constants.MalformedFieldErrorCode
|
||||
}
|
||||
|
||||
return nil, ""
|
||||
}
|
||||
|
||||
func (v *ProductOutletPriceValidatorImpl) ValidateUpdateRequest(req *contract.UpdateProductOutletPriceRequest) (error, string) {
|
||||
if req == nil {
|
||||
return errors.New("request body is required"), constants.MissingFieldErrorCode
|
||||
}
|
||||
|
||||
if req.Price < 0 {
|
||||
return errors.New("price must be non-negative"), constants.MalformedFieldErrorCode
|
||||
}
|
||||
|
||||
return nil, ""
|
||||
}
|
||||
|
||||
func (v *ProductOutletPriceValidatorImpl) ValidateBulkCreateRequest(req *contract.BulkCreateProductOutletPriceRequest) (error, string) {
|
||||
if req == nil {
|
||||
return errors.New("request body is required"), constants.MissingFieldErrorCode
|
||||
}
|
||||
|
||||
if req.ProductID == uuid.Nil {
|
||||
return errors.New("product_id is required"), constants.MissingFieldErrorCode
|
||||
}
|
||||
|
||||
if len(req.Prices) == 0 {
|
||||
return errors.New("at least one price entry is required"), constants.MissingFieldErrorCode
|
||||
}
|
||||
|
||||
for i, p := range req.Prices {
|
||||
if p.OutletID == uuid.Nil {
|
||||
return errors.New("outlet_id is required for each price entry"), constants.MissingFieldErrorCode
|
||||
}
|
||||
if p.Price < 0 {
|
||||
_ = i
|
||||
return errors.New("price must be non-negative for each price entry"), constants.MalformedFieldErrorCode
|
||||
}
|
||||
}
|
||||
|
||||
return nil, ""
|
||||
}
|
||||
Reference in New Issue
Block a user