mirror of
https://github.com/siyuan-note/siyuan.git
synced 2026-03-05 20:30:15 +01:00
🎨 Synchronize the related entries when the database creates a two-way relation https://github.com/siyuan-note/siyuan/issues/11250 https://github.com/siyuan-note/siyuan/issues/11356
This commit is contained in:
parent
c197ca2018
commit
b042355363
2 changed files with 32 additions and 6 deletions
|
|
@ -1629,10 +1629,18 @@ func updateAttributeViewColRelation(operation *Operation) (err error) {
|
|||
continue
|
||||
}
|
||||
|
||||
srcKeyValues := keyValues
|
||||
for _, srcVal := range srcKeyValues.Values {
|
||||
for _, srcVal := range keyValues.Values {
|
||||
for _, blockID := range srcVal.Relation.BlockIDs {
|
||||
destVal := &av.Value{ID: ast.NewNodeID(), KeyID: destKeyValues.Key.ID, BlockID: blockID, Type: keyValues.Key.Type, Relation: &av.ValueRelation{}, CreatedAt: now, UpdatedAt: now + 1000}
|
||||
destVal := destAv.GetValue(destKeyValues.Key.ID, blockID)
|
||||
if nil == destVal {
|
||||
destVal = &av.Value{ID: ast.NewNodeID(), KeyID: destKeyValues.Key.ID, BlockID: blockID, Type: keyValues.Key.Type, Relation: &av.ValueRelation{}, CreatedAt: now, UpdatedAt: now + 1000}
|
||||
} else {
|
||||
destVal.Type = keyValues.Key.Type
|
||||
if nil == destVal.Relation {
|
||||
destVal.Relation = &av.ValueRelation{}
|
||||
}
|
||||
destVal.UpdatedAt = now
|
||||
}
|
||||
destVal.Relation.BlockIDs = append(destVal.Relation.BlockIDs, srcVal.BlockID)
|
||||
destVal.Relation.BlockIDs = gulu.Str.RemoveDuplicatedElem(destVal.Relation.BlockIDs)
|
||||
destKeyValues.Values = append(destKeyValues.Values, destVal)
|
||||
|
|
@ -3232,12 +3240,12 @@ func UpdateAttributeViewCell(tx *Transaction, avID, keyID, rowID, cellID string,
|
|||
// 将游离行绑定到新建的块上
|
||||
bindBlockAv(tx, avID, rowID)
|
||||
}
|
||||
} else { // 之前绑定了块
|
||||
} else { // 之前绑定了块
|
||||
if isUpdatingBlockKey { // 正在更新主键
|
||||
if val.IsDetached { // 现在是游离行
|
||||
// 将绑定的块从属性视图中移除
|
||||
unbindBlockAv(tx, avID, rowID)
|
||||
} else { // 现在绑定了块
|
||||
} else { // 现在绑定了块
|
||||
if oldBoundBlockID != val.BlockID { // 之前绑定的块和现在绑定的块不一样
|
||||
// 换绑块
|
||||
unbindBlockAv(tx, avID, oldBoundBlockID)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue