in server/datasource/etcd/kv/kv_dao.go [40:69]
func (s *Dao) Create(ctx context.Context, kv *model.KVDoc, options ...datasource.WriteOption) (*model.KVDoc, error) {
if err := auth.CheckCreateKV(ctx, kv); err != nil {
return nil, err
}
opts := datasource.NewWriteOptions(options...)
var exist bool
var err error
if opts.SyncEnable {
// if syncEnable is true, will create task in a transaction operation
exist, err = txnCreate(ctx, kv)
} else {
exist, err = create(ctx, kv)
}
if err != nil {
openlog.Error("create error", openlog.WithTags(openlog.Tags{
"err": err.Error(),
"kv": kv,
}))
return nil, err
}
if !exist {
openlog.Error("create error", openlog.WithTags(openlog.Tags{
"err": datasource.ErrKVAlreadyExists.Error(),
"kv": kv,
}))
return nil, datasource.ErrKVAlreadyExists
}
return kv, nil
}