From a2fae4dce1cdfa68ba26e53141e22c01cd1603f4 Mon Sep 17 00:00:00 2001 From: Liang Ding Date: Sat, 22 Apr 2023 18:56:38 +0800 Subject: [PATCH] :art: Improve data snapshot comparison https://github.com/siyuan-note/siyuan/issues/8081 --- kernel/api/repo.go | 3 ++- kernel/model/repository.go | 8 +++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/kernel/api/repo.go b/kernel/api/repo.go index d3f4ea984..7ec3fbd9f 100644 --- a/kernel/api/repo.go +++ b/kernel/api/repo.go @@ -36,7 +36,7 @@ func openRepoSnapshotDoc(c *gin.Context) { } id := arg["id"].(string) - id, rootID, content, isLargeDoc, err := model.OpenRepoSnapshotDoc(id) + id, rootID, content, isLargeDoc, updated, err := model.OpenRepoSnapshotDoc(id) if nil != err { ret.Code = -1 ret.Msg = err.Error() @@ -48,6 +48,7 @@ func openRepoSnapshotDoc(c *gin.Context) { "rootID": rootID, "content": content, "isLargeDoc": isLargeDoc, + "updated": updated, } } diff --git a/kernel/model/repository.go b/kernel/model/repository.go index c91abc5a1..6bbad6c9c 100644 --- a/kernel/model/repository.go +++ b/kernel/model/repository.go @@ -69,7 +69,7 @@ type TypeCount struct { Count int `json:"count"` } -func OpenRepoSnapshotDoc(fileID string) (id, rootID, content string, isLargeDoc bool, err error) { +func OpenRepoSnapshotDoc(fileID string) (id, rootID, content string, isLargeDoc bool, updated int64, err error) { if 1 > len(Conf.Repo.Key) { err = errors.New(Conf.Language(26)) return @@ -80,7 +80,7 @@ func OpenRepoSnapshotDoc(fileID string) (id, rootID, content string, isLargeDoc return } luteEngine := NewLute() - isLargeDoc, snapshotTree, err := parseTreeInSnapshot(fileID, repo, luteEngine) + isLargeDoc, snapshotTree, updated, err := parseTreeInSnapshot(fileID, repo, luteEngine) if nil != err { logging.LogErrorf("parse tree from snapshot file [%s] failed", fileID) return @@ -270,7 +270,7 @@ func parseTitleInSnapshot(fileID string, repo *dejavu.Repo, luteEngine *lute.Lut return } -func parseTreeInSnapshot(fileID string, repo *dejavu.Repo, luteEngine *lute.Lute) (isLargeDoc bool, tree *parse.Tree, err error) { +func parseTreeInSnapshot(fileID string, repo *dejavu.Repo, luteEngine *lute.Lute) (isLargeDoc bool, tree *parse.Tree, updated int64, err error) { file, err := repo.GetFile(fileID) if nil != err { return @@ -286,6 +286,8 @@ func parseTreeInSnapshot(fileID string, repo *dejavu.Repo, luteEngine *lute.Lute if nil != err { return } + + updated = file.Updated return }