🧑‍💻 Add kernel API /api/av/batchSetAttributeViewBlockAttrs https://github.com/siyuan-note/siyuan/issues/15310

This commit is contained in:
Daniel 2025-07-16 23:44:15 +08:00
parent 4c2c4b4a72
commit d7e2d5903a
No known key found for this signature in database
GPG key ID: 86211BA83DF03017
3 changed files with 68 additions and 9 deletions

View file

@ -3955,12 +3955,58 @@ func updateAttributeViewCell(operation *Operation, tx *Transaction) (err error)
return
}
func BatchUpdateAttributeViewCells(tx *Transaction, avID string, values []interface{}) (err error) {
attrView, err := av.ParseAttributeView(avID)
if err != nil {
return
}
for _, value := range values {
v := value.(map[string]interface{})
keyID := v["keyID"].(string)
rowID := v["rowID"].(string)
valueData := v["value"]
_, err = updateAttributeViewValue(tx, attrView, keyID, rowID, valueData)
if err != nil {
return
}
}
if err = av.SaveAttributeView(attrView); err != nil {
return
}
relatedAvIDs := av.GetSrcAvIDs(avID)
for _, relatedAvID := range relatedAvIDs {
ReloadAttrView(relatedAvID)
}
return
}
func UpdateAttributeViewCell(tx *Transaction, avID, keyID, rowID string, valueData interface{}) (val *av.Value, err error) {
attrView, err := av.ParseAttributeView(avID)
if err != nil {
return
}
val, err = updateAttributeViewValue(tx, attrView, keyID, rowID, valueData)
if nil != err {
return
}
if err = av.SaveAttributeView(attrView); err != nil {
return
}
relatedAvIDs := av.GetSrcAvIDs(avID)
for _, relatedAvID := range relatedAvIDs {
ReloadAttrView(relatedAvID)
}
return
}
func updateAttributeViewValue(tx *Transaction, attrView *av.AttributeView, keyID, rowID string, valueData interface{}) (val *av.Value, err error) {
avID := attrView.ID
var blockVal *av.Value
for _, kv := range attrView.KeyValues {
if av.KeyTypeBlock == kv.Key.Type {
@ -4203,15 +4249,6 @@ func UpdateAttributeViewCell(tx *Transaction, avID, keyID, rowID string, valueDa
}
}
}
relatedAvIDs := av.GetSrcAvIDs(avID)
for _, relatedAvID := range relatedAvIDs {
ReloadAttrView(relatedAvID)
}
if err = av.SaveAttributeView(attrView); err != nil {
return
}
return
}