I'm writing a PATCH API and it is not necessary to send all the fields in request. I'd like to update only the new fields. I'm using Datastore, and I think, I need to send entire struct that contains the final value I intend to save, as it replaces all the values. I retrieve existing values from DB in one struct and I have the request in another struct.
type product struct {
TITLE string `json:"title"`
SUMMARY string `json:"summary"`
IMAGEURL string `json:"imageUrl"`
CATEGORY string `json:"category"`
TYPE int `json:"type"`
}
var dbVal product // Holds the existing DB values
var formVal product // Holds the values received from web form (api request)
formVal need not have all the values. It is empty if the field is not sent in the request.
I want the dbVal struct to be updated with the values in formVal ONLY if formVal field is not empty (!= "" for string or != 0 for int).
PS: I searched for more than a day and tried different examples and tried to use reflect from some of the other answers, but not able to find out how to assign values to another struct. If this is already answered, I'm sorry for reposting this - please share the link.