func Update()

in server/service/kv/kv_svc.go [224:263]


func Update(ctx context.Context, kv *model.UpdateKVRequest) (*model.KVDoc, error) {
	oldKV, err := datasource.GetBroker().GetKVDao().Get(ctx, &model.GetKVRequest{
		Domain:  kv.Domain,
		Project: kv.Project,
		ID:      kv.ID,
	})
	if err != nil {
		return nil, err
	}
	if kv.Status != "" {
		oldKV.Status = kv.Status
	}
	if kv.Value != "" {
		oldKV.Value = kv.Value
	}
	oldKV.UpdateTime = time.Now().Unix()
	oldKV.UpdateRevision, err = datasource.GetBroker().GetRevisionDao().ApplyRevision(ctx, kv.Domain)
	if err != nil {
		return nil, err
	}
	err = datasource.GetBroker().GetKVDao().Update(ctx, oldKV, datasource.WithSync(sync.FromContext(ctx)))
	if err != nil {
		return nil, err
	}
	openlog.Info(
		fmt.Sprintf("update %s with labels %s length [%d]",
			oldKV.Key, oldKV.Labels, len(kv.Value)))
	err = datasource.GetBroker().GetHistoryDao().AddHistory(ctx, oldKV)
	if err != nil {
		openlog.Error(
			fmt.Sprintf("can not add revision for [%s] [%s] in [%s],err: %s",
				oldKV.Key, oldKV.Labels, kv.Domain, err))
	}
	openlog.Debug(
		fmt.Sprintf("add history %s with labels %s length [%d]",
			oldKV.Key, oldKV.Labels, len(oldKV.Value)))
	datasource.ClearPart(oldKV)
	return oldKV, nil

}