From 3bfbfbc7e94d71363e9c803428cf8182299d015f Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Sun, 7 Jan 2024 22:53:05 +0800 Subject: [PATCH] :art: Reduce the delay in adding rows in database table view https://github.com/siyuan-note/siyuan/issues/10082 --- kernel/api/av.go | 21 +++++++++++++++++++-- kernel/api/router.go | 1 + kernel/model/attribute_view.go | 21 +++++++++++++++++++++ 3 files changed, 41 insertions(+), 2 deletions(-) diff --git a/kernel/api/av.go b/kernel/api/av.go index c58f066fa..13c438b44 100644 --- a/kernel/api/av.go +++ b/kernel/api/av.go @@ -26,6 +26,24 @@ import ( "github.com/siyuan-note/siyuan/kernel/util" ) +func getAttributeViewFilterSort(c *gin.Context) { + ret := gulu.Ret.NewResult() + defer c.JSON(http.StatusOK, ret) + + arg, _ := util.JsonArg(c, ret) + if nil == arg { + return + } + + avID := arg["id"].(string) + + filters, sorts := model.GetAttributeViewFilterSort(avID) + ret.Data = map[string]interface{}{ + "filters": filters, + "sorts": sorts, + } +} + func searchAttributeViewNonRelationKey(c *gin.Context) { ret := gulu.Ret.NewResult() defer c.JSON(http.StatusOK, ret) @@ -72,9 +90,8 @@ func getAttributeView(c *gin.Context) { } id := arg["id"].(string) - av := model.GetAttributeView(id) ret.Data = map[string]interface{}{ - "av": av, + "av": model.GetAttributeView(id), } } diff --git a/kernel/api/router.go b/kernel/api/router.go index 17ae6cb4e..54bcdff7c 100644 --- a/kernel/api/router.go +++ b/kernel/api/router.go @@ -396,6 +396,7 @@ func ServeAPI(ginServer *gin.Engine) { ginServer.Handle("POST", "/api/av/getAttributeView", model.CheckAuth, model.CheckReadonly, getAttributeView) ginServer.Handle("POST", "/api/av/searchAttributeViewRelationKey", model.CheckAuth, model.CheckReadonly, searchAttributeViewRelationKey) ginServer.Handle("POST", "/api/av/searchAttributeViewNonRelationKey", model.CheckAuth, model.CheckReadonly, searchAttributeViewNonRelationKey) + ginServer.Handle("POST", "/api/av/getAttributeViewFilterSort", model.CheckAuth, model.CheckReadonly, getAttributeViewFilterSort) ginServer.Handle("POST", "/api/ai/chatGPT", model.CheckAuth, chatGPT) ginServer.Handle("POST", "/api/ai/chatGPTWithAction", model.CheckAuth, chatGPTWithAction) diff --git a/kernel/model/attribute_view.go b/kernel/model/attribute_view.go index 10b2c20ca..a9913b8d4 100644 --- a/kernel/model/attribute_view.go +++ b/kernel/model/attribute_view.go @@ -38,6 +38,27 @@ import ( "github.com/siyuan-note/siyuan/kernel/util" ) +func GetAttributeViewFilterSort(id string) (filters []*av.ViewFilter, sorts []*av.ViewSort) { + waitForSyncingStorages() + + attrView, err := av.ParseAttributeView(id) + if nil != err { + logging.LogErrorf("parse attribute view [%s] failed: %s", id, err) + return + } + + filters = []*av.ViewFilter{} + sorts = []*av.ViewSort{} + for _, view := range attrView.Views { + switch view.LayoutType { + case av.LayoutTypeTable: + filters = view.Table.Filters + sorts = view.Table.Sorts + } + } + return +} + func SearchAttributeViewNonRelationKey(avID, keyword string) (ret []*av.Key) { waitForSyncingStorages()