func (h *Handler) UpdateProduct(tkn string, product data.Product) error {
	logger := h.logger.Add("method", "UpdateProduct", "product", product)

	if !h.token.Check(tkn) {
		logger.Warn("access denied")
		return ErrAccessDenied
	}

	oldProduct := &data.Product{}
	if err := h.findByPrimaryKey(logger,
		ErrProductNotFound, oldProduct, product.ID); err != nil {
		return err
	}

	if product.Salt == 0 {
		product.Salt = oldProduct.Salt
	}

	if product.Password == "" {
		product.Password = oldProduct.Password
	}

	if product.ServiceEndpointAddress != nil &&
		!isValidSEAddress(*product.ServiceEndpointAddress) {
		return ErrBadServiceEndpointAddress
	}

	if err := update(logger, h.db.Querier, &product); err != nil {
		logger.Error(err.Error())
		return ErrInternal
	}

	return nil
}
func (h *Handler) UpdateProduct(tkn string, product data.Product) error {
	logger := h.logger.Add("method", "UpdateProduct", "product", product)

	if !h.token.Check(tkn) {
		logger.Warn("access denied")
		return ErrAccessDenied
	}

	oldProduct := &data.Product{}
	if err := h.findByPrimaryKey(logger,
		ErrProductNotFound, oldProduct, product.ID); err != nil {
		return err
	}

	if product.Salt == 0 {
		product.Salt = oldProduct.Salt
	}

	if product.Password == "" {
		product.Password = oldProduct.Password
	}

	if product.ServiceEndpointAddress != nil &&
		!isValidSEAddress(*product.ServiceEndpointAddress) {
		return ErrBadServiceEndpointAddress
	}

	if err := update(logger, h.db.Querier, &product); err != nil {
		logger.Error(err.Error())
		return ErrInternal
	}

	return nil
}
func ( h * Handler ) UpdateProduct ( tkn string , product data . Product ) error { logger := h . logger . Add ( " " , " " , " " , product ) if ! h . token . Check ( tkn ) { logger . Warn ( " " ) return ErrAccessDenied } oldProduct := & data . Product { } if err := h . findByPrimaryKey ( logger , ErrProductNotFound , oldProduct , product . ID ) ; err != nil { return err } if product . Salt == 0 { product . Salt = oldProduct . Salt } if product . Password == " " { product . Password = oldProduct . Password } if product . ServiceEndpointAddress != nil && ! isValidSEAddress ( * product . ServiceEndpointAddress ) { return ErrBadServiceEndpointAddress } if err := update ( logger , h . db . Querier , & product ) ; err != nil { logger . Error ( err . Error ( ) ) return ErrInternal } return nil }
// UpdateProduct updates a product.
UpdateProduct updates a product .