Explorar el Código

:art: 数据快照对比加入时间标识 https://github.com/siyuan-note/siyuan/issues/6899

Liang Ding hace 2 años
padre
commit
42c09e2fad
Se han modificado 6 ficheros con 70 adiciones y 8 borrados
  1. 2 0
      kernel/api/repo.go
  2. 50 0
      kernel/api/riff.go
  3. 2 0
      kernel/api/router.go
  4. 1 1
      kernel/go.mod
  5. 2 2
      kernel/go.sum
  6. 13 5
      kernel/model/repository.go

+ 2 - 0
kernel/api/repo.go

@@ -74,6 +74,8 @@ func diffRepoSnapshots(c *gin.Context) {
 		"updatesLeft":  diff.UpdatesLeft,
 		"updatesRight": diff.UpdatesRight,
 		"removesRight": diff.RemovesRight,
+		"left":         diff.LeftIndex,
+		"right":        diff.RightIndex,
 	}
 }
 

+ 50 - 0
kernel/api/riff.go

@@ -0,0 +1,50 @@
+// SiYuan - Build Your Eternal Digital Garden
+// Copyright (c) 2020-present, b3log.org
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program.  If not, see <https://www.gnu.org/licenses/>.
+
+package api
+
+import (
+	"github.com/88250/gulu"
+	"github.com/gin-gonic/gin"
+	"github.com/siyuan-note/siyuan/kernel/model"
+	"github.com/siyuan-note/siyuan/kernel/util"
+	"net/http"
+)
+
+func createRiffDeck(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)
+	id, rootID, content, isLargeDoc, err := model.OpenRepoSnapshotDoc(id)
+	if nil != err {
+		ret.Code = -1
+		ret.Msg = err.Error()
+		return
+	}
+
+	ret.Data = map[string]interface{}{
+		"id":         id,
+		"rootID":     rootID,
+		"content":    content,
+		"isLargeDoc": isLargeDoc,
+	}
+}

+ 2 - 0
kernel/api/router.go

@@ -299,6 +299,8 @@ func ServeAPI(ginServer *gin.Engine) {
 	ginServer.Handle("POST", "/api/repo/diffRepoSnapshots", model.CheckAuth, diffRepoSnapshots)
 	ginServer.Handle("POST", "/api/repo/openRepoSnapshotDoc", model.CheckAuth, openRepoSnapshotDoc)
 
+	ginServer.Handle("POST", "/api/riff/createRiffDeck", model.CheckAuth, createRiffDeck)
+
 	ginServer.Handle("POST", "/api/notification/pushMsg", model.CheckAuth, pushMsg)
 	ginServer.Handle("POST", "/api/notification/pushErrMsg", model.CheckAuth, pushErrMsg)
 

+ 1 - 1
kernel/go.mod

@@ -39,7 +39,7 @@ require (
 	github.com/patrickmn/go-cache v2.1.0+incompatible
 	github.com/radovskyb/watcher v1.0.7
 	github.com/shirou/gopsutil/v3 v3.22.11
-	github.com/siyuan-note/dejavu v0.0.0-20221221052742-914221eec6f8
+	github.com/siyuan-note/dejavu v0.0.0-20221221065751-91ea22509756
 	github.com/siyuan-note/encryption v0.0.0-20220713091850-5ecd92177b75
 	github.com/siyuan-note/eventbus v0.0.0-20220916025349-3ac6e75522da
 	github.com/siyuan-note/filelock v0.0.0-20221117095924-e1947438a35e

+ 2 - 2
kernel/go.sum

@@ -373,8 +373,8 @@ github.com/shurcooL/reactions v0.0.0-20181006231557-f2e0b4ca5b82/go.mod h1:TCR1l
 github.com/shurcooL/sanitized_anchor_name v0.0.0-20170918181015-86672fcb3f95/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
 github.com/shurcooL/users v0.0.0-20180125191416-49c67e49c537/go.mod h1:QJTqeLYEDaXHZDBsXlPCDqdhQuJkuw4NOtaxYe3xii4=
 github.com/shurcooL/webdavfs v0.0.0-20170829043945-18c3829fa133/go.mod h1:hKmq5kWdCj2z2KEozexVbfEZIWiTjhE0+UjmZgPqehw=
-github.com/siyuan-note/dejavu v0.0.0-20221221052742-914221eec6f8 h1:eQaKK/dh+a/9HX+H5BIGwxj4T3PQphiphrGdyTkSlmQ=
-github.com/siyuan-note/dejavu v0.0.0-20221221052742-914221eec6f8/go.mod h1:bemsV89S70xPIoY6CX9SkL3IX6YkCwS8nK09KTKg/S4=
+github.com/siyuan-note/dejavu v0.0.0-20221221065751-91ea22509756 h1:lp8ihGlC8Mlqn8zI8CeFzWzoi90EaFTWBuCFUwGC5fg=
+github.com/siyuan-note/dejavu v0.0.0-20221221065751-91ea22509756/go.mod h1:bemsV89S70xPIoY6CX9SkL3IX6YkCwS8nK09KTKg/S4=
 github.com/siyuan-note/encryption v0.0.0-20220713091850-5ecd92177b75 h1:Bi7/7f29LW+Fm0cHc0J1NO1cZqyJwljSWVmfOqVZgaE=
 github.com/siyuan-note/encryption v0.0.0-20220713091850-5ecd92177b75/go.mod h1:H8fyqqAbp9XreANjeSbc72zEdFfKTXYN34tc1TjZwtw=
 github.com/siyuan-note/eventbus v0.0.0-20220916025349-3ac6e75522da h1:/jNhl7LC+9BhkWvNxuJDdsNfA/2wvfuj9mqWx4CbV90=

+ 13 - 5
kernel/model/repository.go

@@ -128,10 +128,12 @@ func OpenRepoSnapshotDoc(fileID string) (id, rootID, content string, isLargeDoc
 }
 
 type LeftRightDiff struct {
-	AddsLeft     []*DiffFile `json:"addsLeft"`
-	UpdatesLeft  []*DiffFile `json:"updatesLeft"`
-	UpdatesRight []*DiffFile `json:"updatesRight"`
-	RemovesRight []*DiffFile `json:"removesRight"`
+	LeftIndex    *entity.Index `json:"leftIndex"`
+	RightIndex   *entity.Index `json:"rightIndex"`
+	AddsLeft     []*DiffFile   `json:"addsLeft"`
+	UpdatesLeft  []*DiffFile   `json:"updatesLeft"`
+	UpdatesRight []*DiffFile   `json:"updatesRight"`
+	RemovesRight []*DiffFile   `json:"removesRight"`
 }
 
 type DiffFile struct {
@@ -155,7 +157,13 @@ func DiffRepoSnapshots(left, right string) (ret *LeftRightDiff, err error) {
 		return
 	}
 
-	ret = &LeftRightDiff{}
+	diff.LeftIndex.Files = nil
+	diff.RightIndex.Files = nil
+
+	ret = &LeftRightDiff{
+		LeftIndex:  diff.LeftIndex,
+		RightIndex: diff.RightIndex,
+	}
 	luteEngine := NewLute()
 	for _, addLeft := range diff.AddsLeft {
 		title, err := parseTitleInSnapshot(addLeft.ID, repo, luteEngine)