Selaa lähdekoodia

:art: Add Relation and Rollup column to database table view https://github.com/siyuan-note/siyuan/issues/9888

Daniel 1 vuosi sitten
vanhempi
commit
c916cd0c23
3 muutettua tiedostoa jossa 27 lisäystä ja 3 poistoa
  1. 16 0
      kernel/api/av.go
  2. 1 0
      kernel/api/router.go
  3. 10 3
      kernel/model/attribute_view.go

+ 16 - 0
kernel/api/av.go

@@ -26,6 +26,22 @@ import (
 	"github.com/siyuan-note/siyuan/kernel/util"
 	"github.com/siyuan-note/siyuan/kernel/util"
 )
 )
 
 
+func getAttributeView(c *gin.Context) {
+	ret := gulu.Ret.NewResult()
+	defer c.JSON(http.StatusOK, ret)
+
+	arg, _ := util.JsonArg(c, ret)
+	if nil == arg {
+		return
+	}
+
+	id := arg["id"].(string)
+	av := model.GetAttributeView(id)
+	ret.Data = map[string]interface{}{
+		"av": av,
+	}
+}
+
 func searchAttributeView(c *gin.Context) {
 func searchAttributeView(c *gin.Context) {
 	ret := gulu.Ret.NewResult()
 	ret := gulu.Ret.NewResult()
 	defer c.JSON(http.StatusOK, ret)
 	defer c.JSON(http.StatusOK, ret)

+ 1 - 0
kernel/api/router.go

@@ -387,6 +387,7 @@ func ServeAPI(ginServer *gin.Engine) {
 	ginServer.Handle("POST", "/api/av/getAttributeViewKeys", model.CheckAuth, getAttributeViewKeys)
 	ginServer.Handle("POST", "/api/av/getAttributeViewKeys", model.CheckAuth, getAttributeViewKeys)
 	ginServer.Handle("POST", "/api/av/setAttributeViewBlockAttr", model.CheckAuth, model.CheckReadonly, setAttributeViewBlockAttr)
 	ginServer.Handle("POST", "/api/av/setAttributeViewBlockAttr", model.CheckAuth, model.CheckReadonly, setAttributeViewBlockAttr)
 	ginServer.Handle("POST", "/api/av/searchAttributeView", model.CheckAuth, model.CheckReadonly, searchAttributeView)
 	ginServer.Handle("POST", "/api/av/searchAttributeView", model.CheckAuth, model.CheckReadonly, searchAttributeView)
+	ginServer.Handle("POST", "/api/av/getAttributeView", model.CheckAuth, model.CheckReadonly, getAttributeView)
 
 
 	ginServer.Handle("POST", "/api/ai/chatGPT", model.CheckAuth, chatGPT)
 	ginServer.Handle("POST", "/api/ai/chatGPT", model.CheckAuth, chatGPT)
 	ginServer.Handle("POST", "/api/ai/chatGPTWithAction", model.CheckAuth, chatGPTWithAction)
 	ginServer.Handle("POST", "/api/ai/chatGPTWithAction", model.CheckAuth, chatGPTWithAction)

+ 10 - 3
kernel/model/attribute_view.go

@@ -37,6 +37,13 @@ import (
 	"github.com/siyuan-note/siyuan/kernel/util"
 	"github.com/siyuan-note/siyuan/kernel/util"
 )
 )
 
 
+func GetAttributeView(avID string) (ret *av.AttributeView) {
+	waitForSyncingStorages()
+
+	ret, _ = av.ParseAttributeView(avID)
+	return
+}
+
 type SearchAttributeViewResult struct {
 type SearchAttributeViewResult struct {
 	AvID    string `json:"avID"`
 	AvID    string `json:"avID"`
 	AvName  string `json:"avName"`
 	AvName  string `json:"avName"`
@@ -721,18 +728,18 @@ func (tx *Transaction) doUpdateAttrViewColRelation(operation *Operation) (ret *T
 }
 }
 
 
 func updateAttributeViewColRelation(operation *Operation) (err error) {
 func updateAttributeViewColRelation(operation *Operation) (err error) {
-	err = updateAttributeViewColRelation0(operation.AvID, operation.KeyID, operation.ID, operation.IsBiRelation, operation.BackRelationKeyID)
+	err = updateAttributeViewColRelation0(operation.AvID, operation.KeyID, operation.ID, operation.IsBiRelation, operation.BackRelationKeyID, operation.Name)
 	if nil != err {
 	if nil != err {
 		return
 		return
 	}
 	}
 
 
 	if operation.IsBiRelation {
 	if operation.IsBiRelation {
-		err = updateAttributeViewColRelation0(operation.ID, operation.BackRelationKeyID, operation.AvID, operation.IsBiRelation, operation.KeyID)
+		err = updateAttributeViewColRelation0(operation.ID, operation.BackRelationKeyID, operation.AvID, operation.IsBiRelation, operation.KeyID, operation.Name)
 	}
 	}
 	return
 	return
 }
 }
 
 
-func updateAttributeViewColRelation0(avID, relKeyID, destAvID string, isBiRel bool, backRelKeyID string) (err error) {
+func updateAttributeViewColRelation0(avID, relKeyID, destAvID string, isBiRel bool, backRelKeyID, backRelKeyName string) (err error) {
 	attrView, err := av.ParseAttributeView(avID)
 	attrView, err := av.ParseAttributeView(avID)
 	if nil != err {
 	if nil != err {
 		return
 		return