From 21bde9743dcbf38da221297887931c92e3397e71 Mon Sep 17 00:00:00 2001 From: mcrakhman Date: Thu, 4 May 2023 11:10:08 +0200 Subject: [PATCH] Add timestamp externally in tree --- .../tree/objecttree/objecttreefactory.go | 70 ++----------------- commonspace/space.go | 18 ----- 2 files changed, 5 insertions(+), 83 deletions(-) diff --git a/commonspace/object/tree/objecttree/objecttreefactory.go b/commonspace/object/tree/objecttree/objecttreefactory.go index dfa78f15..dc650bbb 100644 --- a/commonspace/object/tree/objecttree/objecttreefactory.go +++ b/commonspace/object/tree/objecttree/objecttreefactory.go @@ -5,8 +5,6 @@ import ( "github.com/anytypeio/any-sync/commonspace/object/tree/treechangeproto" "github.com/anytypeio/any-sync/commonspace/object/tree/treestorage" "github.com/anytypeio/any-sync/util/crypto" - "math/rand" - "time" ) type ObjectTreeCreatePayload struct { @@ -15,6 +13,8 @@ type ObjectTreeCreatePayload struct { ChangePayload []byte SpaceId string IsEncrypted bool + Seed []byte + Timestamp int64 } type HistoryTreeParams struct { @@ -85,19 +85,6 @@ func nonVerifiableTreeDeps( } } -func CreateObjectTreeRoot(payload ObjectTreeCreatePayload, aclList list.AclList) (root *treechangeproto.RawTreeChangeWithId, err error) { - bytes := make([]byte, 32) - _, err = rand.Read(bytes) - if err != nil { - return - } - return createObjectTreeRoot(payload, time.Now().Unix(), bytes, aclList) -} - -func DeriveObjectTreeRoot(payload ObjectTreeCreatePayload, aclList list.AclList) (root *treechangeproto.RawTreeChangeWithId, err error) { - return createObjectTreeRoot(payload, 0, nil, aclList) -} - func BuildEmptyDataObjectTree(treeStorage treestorage.TreeStorage, aclList list.AclList) (ObjectTree, error) { rootChange, err := treeStorage.Root() if err != nil { @@ -168,54 +155,7 @@ func BuildHistoryTree(params HistoryTreeParams) (HistoryTree, error) { return buildHistoryTree(deps, params) } -func CreateDerivedObjectTree( - payload ObjectTreeCreatePayload, - aclList list.AclList, - createStorage treestorage.TreeStorageCreatorFunc) (objTree ObjectTree, err error) { - return createObjectTree(payload, 0, nil, aclList, createStorage) -} - -func CreateObjectTree( - payload ObjectTreeCreatePayload, - aclList list.AclList, - createStorage treestorage.TreeStorageCreatorFunc) (objTree ObjectTree, err error) { - bytes := make([]byte, 32) - _, err = rand.Read(bytes) - if err != nil { - return - } - return createObjectTree(payload, time.Now().Unix(), bytes, aclList, createStorage) -} - -func createObjectTree( - payload ObjectTreeCreatePayload, - timestamp int64, - seed []byte, - aclList list.AclList, - createStorage treestorage.TreeStorageCreatorFunc) (objTree ObjectTree, err error) { - raw, err := createObjectTreeRoot(payload, timestamp, seed, aclList) - if err != nil { - return - } - - // create storage - st, err := createStorage(treestorage.TreeStorageCreatePayload{ - RootRawChange: raw, - Changes: []*treechangeproto.RawTreeChangeWithId{raw}, - Heads: []string{raw.Id}, - }) - if err != nil { - return - } - - return BuildObjectTree(st, aclList) -} - -func createObjectTreeRoot( - payload ObjectTreeCreatePayload, - timestamp int64, - seed []byte, - aclList list.AclList) (root *treechangeproto.RawTreeChangeWithId, err error) { +func CreateObjectTreeRoot(payload ObjectTreeCreatePayload, aclList list.AclList) (root *treechangeproto.RawTreeChangeWithId, err error) { aclList.RLock() aclHeadId := aclList.Head().Id aclList.RUnlock() @@ -229,8 +169,8 @@ func createObjectTreeRoot( SpaceId: payload.SpaceId, ChangeType: payload.ChangeType, ChangePayload: payload.ChangePayload, - Timestamp: timestamp, - Seed: seed, + Timestamp: payload.Timestamp, + Seed: payload.Seed, } _, root, err = NewChangeBuilder(crypto.NewKeyStorage(), nil).BuildRoot(cnt) diff --git a/commonspace/space.go b/commonspace/space.go index aca80d02..9c953175 100644 --- a/commonspace/space.go +++ b/commonspace/space.go @@ -88,7 +88,6 @@ type Space interface { DebugAllHeads() []headsync.TreeHeads Description() (SpaceDescription, error) - DeriveTree(ctx context.Context, payload objecttree.ObjectTreeCreatePayload) (res treestorage.TreeStorageCreatePayload, err error) CreateTree(ctx context.Context, payload objecttree.ObjectTreeCreatePayload) (res treestorage.TreeStorageCreatePayload, err error) PutTree(ctx context.Context, payload treestorage.TreeStorageCreatePayload, listener updatelistener.UpdateListener) (t objecttree.ObjectTree, err error) BuildTree(ctx context.Context, id string, opts BuildTreeOpts) (t objecttree.ObjectTree, err error) @@ -242,23 +241,6 @@ func (s *space) DebugAllHeads() []headsync.TreeHeads { return s.headSync.DebugAllHeads() } -func (s *space) DeriveTree(ctx context.Context, payload objecttree.ObjectTreeCreatePayload) (res treestorage.TreeStorageCreatePayload, err error) { - if s.isClosed.Load() { - err = ErrSpaceClosed - return - } - root, err := objecttree.DeriveObjectTreeRoot(payload, s.aclList) - if err != nil { - return - } - res = treestorage.TreeStorageCreatePayload{ - RootRawChange: root, - Changes: []*treechangeproto.RawTreeChangeWithId{root}, - Heads: []string{root.Id}, - } - return -} - func (s *space) CreateTree(ctx context.Context, payload objecttree.ObjectTreeCreatePayload) (res treestorage.TreeStorageCreatePayload, err error) { if s.isClosed.Load() { err = ErrSpaceClosed