This commit is contained in:
Daniel 2025-08-10 11:54:31 +08:00
parent ac37d580f6
commit fcd44f41da
No known key found for this signature in database
GPG key ID: 86211BA83DF03017
4 changed files with 10 additions and 16 deletions

View file

@ -185,7 +185,7 @@ func (value *Value) Filter(filter *ViewFilter, attrView *AttributeView, rowID st
for _, blockID := range relVal.Relation.BlockIDs { for _, blockID := range relVal.Relation.BlockIDs {
destVal := destAv.GetValue(key.Rollup.KeyID, blockID) destVal := destAv.GetValue(key.Rollup.KeyID, blockID)
if nil == destVal { if nil == destVal {
if destAv.ExistBlock(blockID) { // 数据库中存在行但是列值不存在是数据未初始化,这里补一个默认值 if destAv.ExistBlock(blockID) { // 数据库中存在项目但是字段值不存在是数据未初始化,这里补一个默认值
destVal = GetAttributeViewDefaultValue(ast.NewNodeID(), key.Rollup.KeyID, blockID, destKey.Type) destVal = GetAttributeViewDefaultValue(ast.NewNodeID(), key.Rollup.KeyID, blockID, destKey.Type)
} }
if nil == destVal { if nil == destVal {

View file

@ -33,9 +33,9 @@ import (
type Value struct { type Value struct {
ID string `json:"id,omitempty"` ID string `json:"id,omitempty"`
KeyID string `json:"keyID,omitempty"` KeyID string `json:"keyID,omitempty"` // 字段 ID
BlockID string `json:"blockID,omitempty"` BlockID string `json:"blockID,omitempty"` // 项目 ID
Type KeyType `json:"type,omitempty"` Type KeyType `json:"type,omitempty"` // 字段类型
IsDetached bool `json:"isDetached,omitempty"` // 是否为非绑定块注意这个字段只能在主键KeyTypeBlock上使用其他类型的值不要使用 IsDetached bool `json:"isDetached,omitempty"` // 是否为非绑定块注意这个字段只能在主键KeyTypeBlock上使用其他类型的值不要使用
CreatedAt int64 `json:"createdAt,omitempty"` CreatedAt int64 `json:"createdAt,omitempty"`

View file

@ -1384,7 +1384,7 @@ func GetBlockAttributeViewKeys(blockID string) (ret []*BlockAttributeViewKeys) {
for _, bID := range relVal.Relation.BlockIDs { for _, bID := range relVal.Relation.BlockIDs {
destVal := destAv.GetValue(kv.Key.Rollup.KeyID, bID) destVal := destAv.GetValue(kv.Key.Rollup.KeyID, bID)
if nil == destVal { if nil == destVal {
if destAv.ExistBlock(bID) { // 数据库中存在但是字段值不存在是数据未初始化,这里补一个默认值 if destAv.ExistBlock(bID) { // 数据库中存在项目但是字段值不存在是数据未初始化,这里补一个默认值
destVal = av.GetAttributeViewDefaultValue(ast.NewNodeID(), kv.Key.Rollup.KeyID, bID, destKey.Type) destVal = av.GetAttributeViewDefaultValue(ast.NewNodeID(), kv.Key.Rollup.KeyID, bID, destKey.Type)
} }
if nil == destVal { if nil == destVal {
@ -4135,18 +4135,13 @@ func BatchReplaceAttributeViewBlocks(avID string, isDetached bool, oldNew []map[
} }
func (tx *Transaction) doUpdateAttrViewCell(operation *Operation) (ret *TxErr) { func (tx *Transaction) doUpdateAttrViewCell(operation *Operation) (ret *TxErr) {
err := updateAttributeViewCell(operation, tx) _, err := UpdateAttributeViewCell(tx, operation.AvID, operation.KeyID, operation.RowID, operation.Data)
if err != nil { if err != nil {
return &TxErr{code: TxErrHandleAttributeView, id: operation.AvID, msg: err.Error()} return &TxErr{code: TxErrHandleAttributeView, id: operation.AvID, msg: err.Error()}
} }
return return
} }
func updateAttributeViewCell(operation *Operation, tx *Transaction) (err error) {
_, err = UpdateAttributeViewCell(tx, operation.AvID, operation.KeyID, operation.RowID, operation.Data)
return
}
func BatchUpdateAttributeViewCells(tx *Transaction, avID string, values []interface{}) (err error) { func BatchUpdateAttributeViewCells(tx *Transaction, avID string, values []interface{}) (err error) {
attrView, err := av.ParseAttributeView(avID) attrView, err := av.ParseAttributeView(avID)
if err != nil { if err != nil {
@ -4317,17 +4312,15 @@ func updateAttributeViewValue(tx *Transaction, attrView *av.AttributeView, keyID
if isUpdatingBlockKey { if isUpdatingBlockKey {
if oldIsDetached { if oldIsDetached {
// 之前是游离行 // 之前是非绑定块
if !val.IsDetached { // 现在绑定了块 if !val.IsDetached { // 现在绑定了块
// 将游离行绑定到新建的块上
bindBlockAv(tx, avID, val.Block.ID) bindBlockAv(tx, avID, val.Block.ID)
} }
} else { } else {
// 之前绑定了块 // 之前绑定了块
if val.IsDetached { // 现在是游离行 if val.IsDetached { // 现在是非绑定块
// 将绑定的块从属性视图中移除
unbindBlockAv(tx, avID, blockID) unbindBlockAv(tx, avID, blockID)
} else { } else {
// 现在也绑定了块 // 现在也绑定了块
@ -4343,6 +4336,7 @@ func updateAttributeViewValue(tx *Transaction, attrView *av.AttributeView, keyID
updateStaticText := true updateStaticText := true
_, blockText := getNodeAvBlockText(node) _, blockText := getNodeAvBlockText(node)
if "" == content { if "" == content {
// 使用动态锚文本
val.Block.Content = util.UnescapeHTML(blockText) val.Block.Content = util.UnescapeHTML(blockText)
} else { } else {
if blockText == content { if blockText == content {

View file

@ -385,7 +385,7 @@ func fillAttributeViewAutoGeneratedValues(attrView *av.AttributeView, collection
} }
if nil == destVal { if nil == destVal {
if destAv.ExistBlock(blockID) { // 数据库中存在行但是列值不存在是数据未初始化,这里补一个默认值 if destAv.ExistBlock(blockID) { // 数据库中存在项目但是字段值不存在是数据未初始化,这里补一个默认值
destVal = av.GetAttributeViewDefaultValue(ast.NewNodeID(), rollupKey.Rollup.KeyID, blockID, destKey.Type) destVal = av.GetAttributeViewDefaultValue(ast.NewNodeID(), rollupKey.Rollup.KeyID, blockID, destKey.Type)
} }
if nil == destVal { if nil == destVal {