package entity import ( "time" ) // use to display a product type ProductDisplay struct { ID int `json:"id"` Name string `json:"name"` Description *string `json:"description"` Price float64 `json:"price"` OriginalPrice float64 `json:"original_price"` Quantity int `json:"quantity"` Status bool `json:"status"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` } // use to create or update a product type ProductCreateUpdate struct { ProductDisplay } // 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 }