Merge remote-tracking branch 'origin/dev' into dev

This commit is contained in:
Vanessa 2023-07-31 11:32:02 +08:00
commit 0b5f9bce98
3 changed files with 28 additions and 25 deletions

View file

@ -35,7 +35,8 @@ func renderAttributeView(c *gin.Context) {
}
id := arg["id"].(string)
view, attrView, err := model.RenderAttributeView(id)
nodeID := arg["nodeID"].(string)
view, attrView, err := model.RenderAttributeView(id, nodeID)
if nil != err {
ret.Code = -1
ret.Msg = err.Error()

View file

@ -38,6 +38,7 @@ import (
type AttributeView struct {
Spec int `json:"spec"` // 格式版本
ID string `json:"id"` // 属性视图 ID
NodeID string `json:"nodeID"` // 属性视图所在节点 ID
Name string `json:"name"` // 属性视图名称
KeyValues []*KeyValues `json:"keyValues"` // 属性视图属性列值
ViewID string `json:"viewID"` // 当前视图 ID
@ -269,7 +270,7 @@ type Viewable interface {
GetID() string
}
func NewAttributeView(id string) (ret *AttributeView) {
func NewAttributeView(id, nodeID string) (ret *AttributeView) {
view := NewView()
key := NewKey(ast.NewNodeID(), "Block", KeyTypeBlock)
ret = &AttributeView{
@ -278,36 +279,29 @@ func NewAttributeView(id string) (ret *AttributeView) {
KeyValues: []*KeyValues{{Key: key}},
ViewID: view.ID,
Views: []*View{view},
NodeID: nodeID,
}
view.Table.Columns = []*ViewTableColumn{{ID: key.ID}}
return
}
func ParseAttributeView(avID string) (ret *AttributeView, err error) {
avJSONPath := getAttributeViewDataPath(avID)
toCreate := false
avJSONPath := GetAttributeViewDataPath(avID)
if !gulu.File.IsExist(avJSONPath) {
ret = NewAttributeView(avID)
toCreate = true
err = ErrViewNotFound
return
}
if !toCreate {
data, readErr := filelock.ReadFile(avJSONPath)
if nil != readErr {
logging.LogErrorf("read attribute view [%s] failed: %s", avID, readErr)
return
}
data, readErr := filelock.ReadFile(avJSONPath)
if nil != readErr {
logging.LogErrorf("read attribute view [%s] failed: %s", avID, readErr)
return
}
ret = &AttributeView{}
if err = gulu.JSON.UnmarshalJSON(data, ret); nil != err {
logging.LogErrorf("unmarshal attribute view [%s] failed: %s", avID, err)
return
}
} else {
if err = SaveAttributeView(ret); nil != err {
logging.LogErrorf("save attribute view [%s] failed: %s", avID, err)
return
}
ret = &AttributeView{}
if err = gulu.JSON.UnmarshalJSON(data, ret); nil != err {
logging.LogErrorf("unmarshal attribute view [%s] failed: %s", avID, err)
return
}
return
}
@ -319,7 +313,7 @@ func SaveAttributeView(av *AttributeView) (err error) {
return
}
avJSONPath := getAttributeViewDataPath(av.ID)
avJSONPath := GetAttributeViewDataPath(av.ID)
if err = filelock.WriteFile(avJSONPath, data); nil != err {
logging.LogErrorf("save attribute view [%s] failed: %s", av.ID, err)
return
@ -359,7 +353,7 @@ func (av *AttributeView) GetBlockKeyValues() (ret *KeyValues) {
return
}
func getAttributeViewDataPath(avID string) (ret string) {
func GetAttributeViewDataPath(avID string) (ret string) {
av := filepath.Join(util.DataDir, "storage", "av")
ret = filepath.Join(av, avID+".json")
if !gulu.File.IsDir(av) {

View file

@ -86,9 +86,17 @@ func GetBlockAttributeViewKeys(blockID string) (ret []*BlockAttributeViewKeys) {
return
}
func RenderAttributeView(avID string) (viewable av.Viewable, attrView *av.AttributeView, err error) {
func RenderAttributeView(avID, nodeID string) (viewable av.Viewable, attrView *av.AttributeView, err error) {
waitForSyncingStorages()
if avJSONPath := av.GetAttributeViewDataPath(avID); !gulu.File.IsExist(avJSONPath) {
attrView = av.NewAttributeView(avID, nodeID)
if err = av.SaveAttributeView(attrView); nil != err {
logging.LogErrorf("save attribute view [%s] failed: %s", avID, err)
return
}
}
attrView, err = av.ParseAttributeView(avID)
if nil != err {
logging.LogErrorf("parse attribute view [%s] failed: %s", avID, err)