1
0
Fork 0
mirror of https://github.com/anyproto/any-sync.git synced 2025-06-11 10:18:08 +09:00

GO-3273: update history version api

Signed-off-by: AnastasiaShemyakinskaya <shem98a@mail.ru>
This commit is contained in:
AnastasiaShemyakinskaya 2024-08-14 15:05:40 +02:00
parent 64676816f5
commit 9b0ed4e184
No known key found for this signature in database
GPG key ID: CCD60ED83B103281
6 changed files with 18 additions and 62 deletions

View file

@ -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,
})
}

View file

@ -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
}

View file

@ -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)

View file

@ -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 {

View file

@ -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 {

View file

@ -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(),
})
}
)