From 9b0ed4e184f8c171b6140e64b8e60f88808a5b0d Mon Sep 17 00:00:00 2001 From: AnastasiaShemyakinskaya Date: Wed, 14 Aug 2024 15:05:40 +0200 Subject: [PATCH] GO-3273: update history version api Signed-off-by: AnastasiaShemyakinskaya --- .../object/tree/exporter/treeimport.go | 28 ------------------- .../object/tree/objecttree/historytree.go | 25 ++++++----------- .../object/tree/objecttree/objecttree_test.go | 11 +++----- .../tree/objecttree/objecttreefactory.go | 3 +- commonspace/objecttreebuilder/treebuilder.go | 8 ++---- commonspace/settings/settingsobject.go | 5 ++-- 6 files changed, 18 insertions(+), 62 deletions(-) delete mode 100644 commonspace/object/tree/exporter/treeimport.go diff --git a/commonspace/object/tree/exporter/treeimport.go b/commonspace/object/tree/exporter/treeimport.go deleted file mode 100644 index 25ffa499..00000000 --- a/commonspace/object/tree/exporter/treeimport.go +++ /dev/null @@ -1,28 +0,0 @@ -package exporter - -import ( - "github.com/anyproto/any-sync/commonspace/object/acl/list" - "github.com/anyproto/any-sync/commonspace/object/acl/liststorage" - "github.com/anyproto/any-sync/commonspace/object/tree/objecttree" - "github.com/anyproto/any-sync/commonspace/object/tree/treestorage" -) - -type TreeImportParams struct { - ListStorage liststorage.ListStorage - TreeStorage treestorage.TreeStorage - BeforeId string - IncludeBeforeId bool -} - -func ImportHistoryTree(params TreeImportParams) (tree objecttree.ReadableObjectTree, err error) { - aclList, err := list.BuildAclList(params.ListStorage, list.NoOpAcceptorVerifier{}) - if err != nil { - return - } - return objecttree.BuildNonVerifiableHistoryTree(objecttree.HistoryTreeParams{ - TreeStorage: params.TreeStorage, - AclList: aclList, - BeforeId: params.BeforeId, - IncludeBeforeId: params.IncludeBeforeId, - }) -} diff --git a/commonspace/object/tree/objecttree/historytree.go b/commonspace/object/tree/objecttree/historytree.go index fe3c381f..99270e6f 100644 --- a/commonspace/object/tree/objecttree/historytree.go +++ b/commonspace/object/tree/objecttree/historytree.go @@ -27,34 +27,25 @@ func (h *historyTree) rebuildFromStorage(params HistoryTreeParams) (err error) { } func (h *historyTree) rebuild(params HistoryTreeParams) (err error) { - var ( - beforeId = params.BeforeId - include = params.IncludeBeforeId - full = params.BuildFullTree - ) h.treeBuilder.Reset() - if full { + if len(params.Heads) == 0 { h.tree, err = h.treeBuilder.BuildFull() return } - if beforeId == h.Id() && !include { - return ErrLoadBeforeRoot - } - heads := []string{beforeId} - if beforeId == "" { - heads, err = h.treeStorage.Heads() + if len(params.Heads) == 1 && params.Heads[0] == "" { + params.Heads, err = h.treeStorage.Heads() if err != nil { return } - } else if !include { - beforeChange, err := h.treeBuilder.loadChange(beforeId) + } + if !params.IncludeBeforeId && len(params.Heads) == 1 { + beforeChange, err := h.treeBuilder.loadChange(params.Heads[0]) if err != nil { return err } - heads = beforeChange.PreviousIds + params.Heads = beforeChange.PreviousIds } - - h.tree, err = h.treeBuilder.build(heads, nil, nil) + h.tree, err = h.treeBuilder.build(params.Heads, nil, nil) return } diff --git a/commonspace/object/tree/objecttree/objecttree_test.go b/commonspace/object/tree/objecttree/objecttree_test.go index c280c6aa..bde6265f 100644 --- a/commonspace/object/tree/objecttree/objecttree_test.go +++ b/commonspace/object/tree/objecttree/objecttree_test.go @@ -1174,7 +1174,7 @@ func TestObjectTree(t *testing.T) { } deps.treeStorage.AddRawChangesSetHeads(rawChanges, []string{"6"}) hTree, err := buildHistoryTree(deps, HistoryTreeParams{ - BeforeId: "6", + Heads: []string{"6"}, IncludeBeforeId: false, }) require.NoError(t, err) @@ -1205,9 +1205,7 @@ func TestObjectTree(t *testing.T) { changeCreator.CreateRaw("6", aclList.Head().Id, "5", false, "5"), } deps.treeStorage.AddRawChangesSetHeads(rawChanges, []string{"6"}) - hTree, err := buildHistoryTree(deps, HistoryTreeParams{ - BuildFullTree: true, - }) + hTree, err := buildHistoryTree(deps, HistoryTreeParams{}) require.NoError(t, err) // check tree heads assert.Equal(t, []string{"6"}, hTree.Heads()) @@ -1236,8 +1234,7 @@ func TestObjectTree(t *testing.T) { } deps.treeStorage.AddRawChangesSetHeads(rawChanges, []string{"6"}) hTree, err := buildHistoryTree(deps, HistoryTreeParams{ - BeforeId: "6", - IncludeBeforeId: true, + Heads: []string{"6"}, IncludeBeforeId: true, }) require.NoError(t, err) // check tree heads @@ -1257,7 +1254,7 @@ func TestObjectTree(t *testing.T) { t.Run("test history tree root", func(t *testing.T) { _, deps := prepareHistoryTreeDeps(aclList) hTree, err := buildHistoryTree(deps, HistoryTreeParams{ - BeforeId: "0", + Heads: []string{"0"}, IncludeBeforeId: true, }) require.NoError(t, err) diff --git a/commonspace/object/tree/objecttree/objecttreefactory.go b/commonspace/object/tree/objecttree/objecttreefactory.go index a96992ba..e9897287 100644 --- a/commonspace/object/tree/objecttree/objecttreefactory.go +++ b/commonspace/object/tree/objecttree/objecttreefactory.go @@ -27,9 +27,8 @@ type ObjectTreeDerivePayload struct { type HistoryTreeParams struct { TreeStorage treestorage.TreeStorage AclList list.AclList - BeforeId string + Heads []string IncludeBeforeId bool - BuildFullTree bool } type objectTreeDeps struct { diff --git a/commonspace/objecttreebuilder/treebuilder.go b/commonspace/objecttreebuilder/treebuilder.go index 09836725..acfdbb36 100644 --- a/commonspace/objecttreebuilder/treebuilder.go +++ b/commonspace/objecttreebuilder/treebuilder.go @@ -39,9 +39,8 @@ var log = logger.NewNamed(CName) var ErrSpaceClosed = errors.New("space is closed") type HistoryTreeOpts struct { - BeforeId string - Include bool - BuildFullTree bool + Heads []string + Include bool } type TreeBuilder interface { @@ -145,9 +144,8 @@ func (t *treeBuilder) BuildHistoryTree(ctx context.Context, id string, opts Hist params := objecttree.HistoryTreeParams{ AclList: t.aclList, - BeforeId: opts.BeforeId, + Heads: opts.Heads, IncludeBeforeId: opts.Include, - BuildFullTree: opts.BuildFullTree, } params.TreeStorage, err = t.spaceStorage.TreeStorage(id) if err != nil { diff --git a/commonspace/settings/settingsobject.go b/commonspace/settings/settingsobject.go index c3f5b182..dc7dcbe3 100644 --- a/commonspace/settings/settingsobject.go +++ b/commonspace/settings/settingsobject.go @@ -44,9 +44,8 @@ var ( DoSnapshot = objecttree.DoSnapshot buildHistoryTree = func(objTree objecttree.ObjectTree) (objecttree.ReadableObjectTree, error) { return objecttree.BuildHistoryTree(objecttree.HistoryTreeParams{ - TreeStorage: objTree.Storage(), - AclList: objTree.AclList(), - BuildFullTree: true, + TreeStorage: objTree.Storage(), + AclList: objTree.AclList(), }) } )