diff --git a/API.md b/API.md index 3cb22c74b..44d1d0fcf 100644 --- a/API.md +++ b/API.md @@ -462,6 +462,28 @@ View API token in Settings - About, request header: `Authorization: T "data": "/foo/bar" } ``` + +### Get storage path based on ID + +* `/api/filetree/getPathByID` +* Parameters + + ```json + { + "id": "20210917220056-yxtyl7i" + } + ``` + + * `id`: Block ID +* Return value + + ```json + { + "code": 0, + "msg": "", + "data": "/20210828150719-r8edxl2/20210917220056-yxtyl7i.sy" + } + ``` ### Get IDs based on human-readable path diff --git a/API_zh_CN.md b/API_zh_CN.md index 86cdbf40a..74b74efd4 100644 --- a/API_zh_CN.md +++ b/API_zh_CN.md @@ -462,6 +462,27 @@ } ``` +### 根据 ID 获取存储路径 +* `/api/filetree/getPathByID` +* 参数 + + ```json + { + "id": "20210917220056-yxtyl7i" + } + ``` + + * `id`:块 ID +* 返回值 + + ```json + { + "code": 0, + "msg": "", + "data": "/20210828150719-r8edxl2/20210917220056-yxtyl7i.sy" + } + ``` + ### 根据人类可读路径获取 IDs * `/api/filetree/getIDsByHPath` diff --git a/kernel/api/filetree.go b/kernel/api/filetree.go index 84e112f95..b00c78d14 100644 --- a/kernel/api/filetree.go +++ b/kernel/api/filetree.go @@ -364,6 +364,29 @@ func getHPathByID(c *gin.Context) { ret.Data = hPath } +func getPathByID(c *gin.Context) { + ret := gulu.Ret.NewResult() + defer c.JSON(http.StatusOK, ret) + + arg, ok := util.JsonArg(c, ret) + if !ok { + return + } + + id := arg["id"].(string) + if util.InvalidIDPattern(id, ret) { + return + } + + _path, err := model.GetPathByID(id) + if nil != err { + ret.Code = -1 + ret.Msg = err.Error() + return + } + ret.Data = _path +} + func getFullHPathByID(c *gin.Context) { ret := gulu.Ret.NewResult() defer c.JSON(http.StatusOK, ret) diff --git a/kernel/api/router.go b/kernel/api/router.go index 9e786324c..ff825dacb 100644 --- a/kernel/api/router.go +++ b/kernel/api/router.go @@ -106,6 +106,7 @@ func ServeAPI(ginServer *gin.Engine) { ginServer.Handle("POST", "/api/filetree/getHPathByPath", model.CheckAuth, getHPathByPath) ginServer.Handle("POST", "/api/filetree/getHPathsByPaths", model.CheckAuth, getHPathsByPaths) ginServer.Handle("POST", "/api/filetree/getHPathByID", model.CheckAuth, getHPathByID) + ginServer.Handle("POST", "/api/filetree/getPathByID", model.CheckAuth, getPathByID) ginServer.Handle("POST", "/api/filetree/getFullHPathByID", model.CheckAuth, getFullHPathByID) ginServer.Handle("POST", "/api/filetree/getIDsByHPath", model.CheckAuth, getIDsByHPath) ginServer.Handle("POST", "/api/filetree/doc2Heading", model.CheckAuth, model.CheckAdminRole, model.CheckReadonly, doc2Heading) diff --git a/kernel/model/file.go b/kernel/model/file.go index c728c1ff9..32bd23026 100644 --- a/kernel/model/file.go +++ b/kernel/model/file.go @@ -1327,6 +1327,15 @@ func GetHPathByID(id string) (hPath string, err error) { return } +func GetPathByID(id string) (hPath string, err error) { + tree, err := LoadTreeByBlockID(id) + if nil != err { + return + } + hPath = tree.Path + return +} + func GetFullHPathByID(id string) (hPath string, err error) { tree, err := LoadTreeByBlockID(id) if nil != err {