diff --git a/API.md b/API.md index b35cd9091..9806b5cc8 100644 --- a/API.md +++ b/API.md @@ -30,6 +30,7 @@ * [Move a block](#Move-a-block) * [Get a block kramdown](#Get-a-block-kramdown) * [Get child blocks](#get-child-blocks) + * [Transfer block ref](#transfer-block-ref) * [Attributes](#Attributes) * [Set block attributes](#Set-block-attributes) * [Get block attributes](#Get-block-attributes) @@ -815,6 +816,32 @@ View API token in Settings - About, request header: `Authorization: T } ``` +### Transfer block ref + +* `/api/block/transferBlockRef` +* Parameters + + ```json + { + "fromID": "20230612160235-mv6rrh1", + "toID": "20230613093045-uwcomng", + "refIDs": ["20230613092230-cpyimmd"] + } + ``` + + * `fromID`: Def block ID + * `toID`: Target block ID + * `refIDs`: Ref block IDs point to def block ID, optional, if not specified, all ref block IDs will be transferred +* Return value + + ```json + { + "code": 0, + "msg": "", + "data": null + } + ``` + ## Attributes ### Set block attributes diff --git a/API_zh_CN.md b/API_zh_CN.md index dfecb8f59..14ba56064 100644 --- a/API_zh_CN.md +++ b/API_zh_CN.md @@ -30,6 +30,7 @@ * [移动块](#移动块) * [获取块 kramdown 源码](#获取块-kramdown-源码) * [获取子块](#获取子块) + * [转移块引用](#转移块引用) * [属性](#属性) * [设置块属性](#设置块属性) * [获取块属性](#获取块属性) @@ -808,6 +809,33 @@ } ``` +### 转移块引用 + +* `/api/block/transferBlockRef` +* 参数 + + ```json + { + "fromID": "20230612160235-mv6rrh1", + "toID": "20230613093045-uwcomng", + "refIDs": ["20230613092230-cpyimmd"] + } + ``` + + * `fromID`:定义块 ID + * `toID`:目标块 ID + * `refIDs`:指向定义块 ID 的引用所在块 ID,可选,如果不指定,所有指向定义块 ID 的引用块 ID 都会被转移 +* 返回值 + + ```json + { + "code": 0, + "msg": "", + "data": null + } + ``` + + ## 属性 ### 设置块属性 diff --git a/kernel/api/block.go b/kernel/api/block.go index 02cec7a92..3b789095c 100644 --- a/kernel/api/block.go +++ b/kernel/api/block.go @@ -47,7 +47,14 @@ func transferBlockRef(c *gin.Context) { return } - err := model.TransferBlockRef(fromID, toID) + var refIDs []string + if nil != arg["refIDs"] { + for _, refID := range arg["refIDs"].([]interface{}) { + refIDs = append(refIDs, refID.(string)) + } + } + + err := model.TransferBlockRef(fromID, toID, refIDs) if nil != err { ret.Code = -1 ret.Msg = err.Error() diff --git a/kernel/model/block.go b/kernel/model/block.go index 5789bd25b..8dd5c7c42 100644 --- a/kernel/model/block.go +++ b/kernel/model/block.go @@ -117,7 +117,7 @@ func RecentUpdatedBlocks() (ret []*Block) { return } -func TransferBlockRef(fromID, toID string) (err error) { +func TransferBlockRef(fromID, toID string, refIDs []string) (err error) { toTree, _ := loadTreeByBlockID(toID) if nil == toTree { err = ErrBlockNotFound @@ -132,7 +132,9 @@ func TransferBlockRef(fromID, toID string) (err error) { util.PushMsg(Conf.Language(116), 7000) - refIDs, _ := sql.QueryRefIDsByDefID(fromID, false) + if 1 > len(refIDs) { // 如果不指定 refIDs,则转移所有引用了 fromID 的块 + refIDs, _ = sql.QueryRefIDsByDefID(fromID, false) + } for _, refID := range refIDs { tree, _ := loadTreeByBlockID(refID) if nil == tree {