From 550b4bcae76aad42d60680bfb4297aa00669b9cd Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Sat, 1 Jul 2023 12:13:58 +0800 Subject: [PATCH] :art: Update av --- kernel/av/cell.go | 12 ++++++------ kernel/model/transaction.go | 12 +++++++++++- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/kernel/av/cell.go b/kernel/av/cell.go index 81dde9250..ff4f7bd21 100644 --- a/kernel/av/cell.go +++ b/kernel/av/cell.go @@ -30,12 +30,12 @@ type Cell struct { } type Value struct { - Block *ValueBlock `json:"block"` - Text *ValueText `json:"text"` - Number *ValueNumber `json:"number"` - Date *ValueDate `json:"date"` - Select *ValueSelect `json:"select"` - MSelect []*ValueSelect `json:"mSelect"` + Block *ValueBlock `json:"block,omitempty"` + Text *ValueText `json:"text,omitempty"` + Number *ValueNumber `json:"number,omitempty"` + Date *ValueDate `json:"date,omitempty"` + Select *ValueSelect `json:"select,omitempty"` + MSelect []*ValueSelect `json:"mSelect,omitempty"` } func (value *Value) ToJSONString() string { diff --git a/kernel/model/transaction.go b/kernel/model/transaction.go index 6e360bfb9..7d9e63cf2 100644 --- a/kernel/model/transaction.go +++ b/kernel/model/transaction.go @@ -1116,6 +1116,7 @@ func refreshDynamicRefText(updatedDefNode *ast.Node, updatedTree *parse.Tree) { // refreshDynamicRefTexts 用于批量刷新引用块的动态锚文本。 // 该实现依赖了数据库缓存,导致外部调用时可能需要阻塞等待数据库写入后才能获取到 refs func refreshDynamicRefTexts(updatedDefNodes map[string]*ast.Node, updatedTrees map[string]*parse.Tree) { + // 1. 更新引用的动态锚文本 treeRefNodeIDs := map[string]*hashset.Set{} for _, updateNode := range updatedDefNodes { refs := sql.GetRefsCacheByDefID(updateNode.ID) @@ -1146,6 +1147,8 @@ func refreshDynamicRefTexts(updatedDefNodes map[string]*ast.Node, updatedTrees m } } + changedRefTree := map[string]*parse.Tree{} + for refTreeID, refNodeIDs := range treeRefNodeIDs { refTree, ok := updatedTrees[refTreeID] if !ok { @@ -1173,9 +1176,16 @@ func refreshDynamicRefTexts(updatedDefNodes map[string]*ast.Node, updatedTrees m }) if refTreeChanged { - indexWriteJSONQueue(refTree) + changedRefTree[refTreeID] = refTree } } + + // 2. 更新属性视图主键内容 + + // 3. 保存变更 + for _, tree := range changedRefTree { + indexWriteJSONQueue(tree) + } } var updateRefTextRenameDocs = map[string]*parse.Tree{}