online-order/entity/product.go
2023-11-01 20:12:26 +03:30

68 lines
1.8 KiB
Go

package entity
import (
"time"
)
// use to display a product
type ProductDisplay struct {
ID int `json:"id"`
Name string `json:"name"`
Description *string `json:"description"`
Summary *string `json:"summary"`
Price float64 `json:"price"`
OriginalPrice float64 `json:"original_price"`
Quantity int `json:"quantity"`
Status bool `json:"status"`
UserID int `json:"user_id"`
ProductCategoryID int `json:"product_category_id"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
}
// use to create or update a product
type ProductCreateUpdate struct {
ProductDisplay
BusinessID int `json:"business_id"`
}
// Func that will check non empty field on ProductDisplay and update product
func ValidateUpdate(product *ProductCreateUpdate, p *ProductDisplay) *ProductCreateUpdate {
if product.Price > p.OriginalPrice {
product.Price = p.Price
product.OriginalPrice = p.OriginalPrice
}
if product.Quantity < 0 {
product.Quantity = 0
}
product.ID = p.ID
product.Name = p.Name
product.Description = p.Description
product.Price = p.Price
product.OriginalPrice = p.OriginalPrice
product.Quantity = p.Quantity
product.Status = p.Status
product.CreatedAt = p.CreatedAt
product.UpdatedAt = p.UpdatedAt
return product
}
func ProductDisplayFormatter(product *ProductCreateUpdate) (p *ProductDisplay) {
p = &ProductDisplay{
ID: product.ID,
Name: product.Name,
Description: product.Description,
Price: product.Price,
OriginalPrice: product.OriginalPrice,
Quantity: product.Quantity,
Status: product.Status,
CreatedAt: product.CreatedAt,
UpdatedAt: product.UpdatedAt,
}
return
}