donates: do insert or update depending depending on the need.