diff --git a/pkg/acl/testutils/acllistbuilder/liststoragebuilder.go b/pkg/acl/testutils/acllistbuilder/liststoragebuilder.go index e78a7df2..2116eac7 100644 --- a/pkg/acl/testutils/acllistbuilder/liststoragebuilder.go +++ b/pkg/acl/testutils/acllistbuilder/liststoragebuilder.go @@ -10,7 +10,6 @@ import ( "github.com/anytypeio/go-anytype-infrastructure-experiments/util/keys/asymmetric/signingkey" "io/ioutil" "path" - "sync" "time" "github.com/gogo/protobuf/proto" @@ -25,7 +24,6 @@ type ACLListStorageBuilder struct { keychain *Keychain header *aclpb.Header id string - sync.RWMutex } func NewACLListStorageBuilder(keychain *Keychain) *ACLListStorageBuilder { diff --git a/pkg/acl/testutils/acllistbuilder/treestoragebuildergraph.go b/pkg/acl/testutils/acllistbuilder/liststoragebuildergraph.go similarity index 100% rename from pkg/acl/testutils/acllistbuilder/treestoragebuildergraph.go rename to pkg/acl/testutils/acllistbuilder/liststoragebuildergraph.go diff --git a/pkg/acl/testutils/acllistbuilder/treestoragebuildergraph_nix.go b/pkg/acl/testutils/acllistbuilder/liststoragebuildergraph_nix.go similarity index 100% rename from pkg/acl/testutils/acllistbuilder/treestoragebuildergraph_nix.go rename to pkg/acl/testutils/acllistbuilder/liststoragebuildergraph_nix.go diff --git a/pkg/acl/testutils/yamltests/userjoinexampleupdate.yml b/pkg/acl/testutils/yamltests/userjoinexampleupdate.yml deleted file mode 100644 index 1e7d2b01..00000000 --- a/pkg/acl/testutils/yamltests/userjoinexampleupdate.yml +++ /dev/null @@ -1,152 +0,0 @@ -tree: - author: A -changes: - - id: A.1.1 - identity: A - aclSnapshot: - userStates: - - identity: A - encryptionKey: key.Enc.A - encryptedReadKeys: [key.Read.1] - permission: admin - snapshot: - text: "some text" - aclChanges: - - userAdd: - identity: A - permission: admin - encryptionKey: key.Enc.A - encryptedReadKeys: [key.Read.1] - changes: - - textAppend: - text: "some text" - readKey: key.Read.1 - - id: A.1.2 - identity: A - aclChanges: - - userInvite: - acceptKey: key.Sign.Onetime1 - encryptionKey: key.Enc.Onetime1 - encryptedReadKeys: [key.Read.1] - permissions: writer - inviteId: A.1.2 - - userAdd: - identity: C - permission: reader - encryptionKey: key.Enc.C - encryptedReadKeys: [ key.Read.1 ] - readKey: key.Read.1 - - id: A.1.3 - identity: A - changes: - - textAppend: - text: "second" - readKey: key.Read.1 - - id: B.1.1 - identity: B - aclChanges: - - userJoin: - identity: B - encryptionKey: key.Enc.B - acceptSignature: key.Sign.Onetime1 - inviteId: A.1.2 - encryptedReadKeys: [key.Read.1] - readKey: key.Read.1 - - id: B.1.2 - identity: B - changes: - - textAppend: - text: "first" - readKey: key.Read.1 - - id: C.1.1 - identity: C - changes: - - textAppend: - text: "third" - readKey: key.Read.1 -keys: - Enc: - - A - - B - - C - - D - - Onetime1 - Sign: - - A - - B - - C - - D - - Onetime1 - Read: - - 1 -graph: - - id: A.1.1 - baseSnapshot: A.1.1 - - id: A.1.2 - baseSnapshot: A.1.1 - aclHeads: [A.1.1] - treeHeads: [A.1.1] - - id: B.1.1 - baseSnapshot: A.1.1 - aclHeads: [A.1.2] - treeHeads: [A.1.2] - - id: B.1.2 - baseSnapshot: A.1.1 - aclHeads: [B.1.1] - treeHeads: [B.1.1] - - id: A.1.3 # this should be invalid, because it is based on one of the invalid changes - baseSnapshot: A.1.1 - aclHeads: [B.1.1] - treeHeads: [B.1.2, C.1.1] - - id: C.1.1 # this should be invalid, because C is a reader - baseSnapshot: A.1.1 - aclHeads: [B.1.1] - treeHeads: [B.1.1] -header: - firstChangeId: A.1.1 - isWorkspace: false -orphans: - - "A.1.3" -updates: - - useCase: append - changes: - - id: B.1.3 - identity: B - changes: - - textAppend: - text: "second" - readKey: key.Read.1 - - id: A.1.4 - identity: A - aclChanges: - - userAdd: - identity: D - permission: writer - encryptionKey: key.Enc.D - encryptedReadKeys: [ key.Read.1 ] - readKey: key.Read.1 - graph: - - id: B.1.3 - baseSnapshot: A.1.1 - aclHeads: [ B.1.1 ] - treeHeads: [ B.1.2 ] - - id: A.1.4 - baseSnapshot: A.1.1 - aclHeads: [ B.1.1 ] - treeHeads: [ B.1.3 ] - - useCase: rebuild - changes: - - id: A.1.4 - identity: A - aclChanges: - - userAdd: - identity: D - permission: writer - encryptionKey: key.Enc.D - encryptedReadKeys: [ key.Read.1 ] - readKey: key.Read.1 - graph: - - id: A.1.4 - baseSnapshot: A.1.1 - aclHeads: [ A.1.1 ] - treeHeads: [ A.1.1 ] diff --git a/pkg/acl/tree/commontree.go b/pkg/acl/tree/commontree.go index 53c8e62f..9018c878 100644 --- a/pkg/acl/tree/commontree.go +++ b/pkg/acl/tree/commontree.go @@ -3,12 +3,11 @@ package tree import ( "github.com/anytypeio/go-anytype-infrastructure-experiments/pkg/acl/aclchanges/aclpb" "github.com/anytypeio/go-anytype-infrastructure-experiments/pkg/acl/treestorage" - "github.com/anytypeio/go-anytype-infrastructure-experiments/pkg/acl/treestorage/treepb" ) type CommonTree interface { ID() string - Header() *treepb.TreeHeader + Header() *aclpb.Header Heads() []string Root() *Change Iterate(func(change *Change) bool) diff --git a/pkg/acl/tree/doctree.go b/pkg/acl/tree/doctree.go index 45a5bca1..eeece7e6 100644 --- a/pkg/acl/tree/doctree.go +++ b/pkg/acl/tree/doctree.go @@ -7,7 +7,6 @@ import ( "github.com/anytypeio/go-anytype-infrastructure-experiments/pkg/acl/aclchanges/aclpb" "github.com/anytypeio/go-anytype-infrastructure-experiments/pkg/acl/list" "github.com/anytypeio/go-anytype-infrastructure-experiments/pkg/acl/treestorage" - "github.com/anytypeio/go-anytype-infrastructure-experiments/pkg/acl/treestorage/treepb" "github.com/anytypeio/go-anytype-infrastructure-experiments/util/cid" "github.com/anytypeio/go-anytype-infrastructure-experiments/util/keys" "github.com/anytypeio/go-anytype-infrastructure-experiments/util/keys/asymmetric/signingkey" @@ -61,7 +60,7 @@ type docTree struct { updateListener TreeUpdateListener id string - header *treepb.TreeHeader + header *aclpb.Header tree *Tree treeBuilder *treeBuilder @@ -96,7 +95,7 @@ func BuildDocTreeWithIdentity(t treestorage.TreeStorage, acc *account.AccountDat if err != nil { return nil, err } - docTree.id, err = t.TreeID() + docTree.id, err = t.ID() if err != nil { return nil, err } @@ -131,7 +130,7 @@ func BuildDocTree(t treestorage.TreeStorage, decoder keys.Decoder, listener Tree if err != nil { return nil, err } - docTree.id, err = t.TreeID() + docTree.id, err = t.ID() if err != nil { return nil, err } @@ -162,7 +161,7 @@ func (d *docTree) ID() string { return d.id } -func (d *docTree) Header() *treepb.TreeHeader { +func (d *docTree) Header() *aclpb.Header { return d.header } @@ -448,7 +447,7 @@ func (d *docTree) ChangesAfterCommonSnapshot(theirPath []string) ([]*aclpb.RawCh var rawChanges []*aclpb.RawChange // using custom load function to skip verification step and save raw changes load := func(id string) (*Change, error) { - raw, err := d.treeStorage.GetChange(context.Background(), id) + raw, err := d.treeStorage.GetRawChange(context.Background(), id) if err != nil { return nil, err } diff --git a/pkg/acl/tree/treebuilder.go b/pkg/acl/tree/treebuilder.go index e63d2292..ea93af90 100644 --- a/pkg/acl/tree/treebuilder.go +++ b/pkg/acl/tree/treebuilder.go @@ -117,7 +117,7 @@ func (tb *treeBuilder) dfsFromStart(heads []string) (buf []*Change, root *Change return nil, nil, err } for _, r := range possibleRoots { - if r.Id == header.FirstChangeId { + if r.Id == header.FirstId { return buf, r, nil } } @@ -177,7 +177,7 @@ func (tb *treeBuilder) loadChange(id string) (ch *Change, err error) { ctx, cancel := context.WithTimeout(context.Background(), time.Second*30) defer cancel() - change, err := tb.treeStorage.GetChange(ctx, id) + change, err := tb.treeStorage.GetRawChange(ctx, id) if err != nil { return nil, err } diff --git a/pkg/acl/tree/treestorage.go b/pkg/acl/tree/treestorage.go index b5e450db..5c9e753b 100644 --- a/pkg/acl/tree/treestorage.go +++ b/pkg/acl/tree/treestorage.go @@ -5,7 +5,6 @@ import ( "github.com/anytypeio/go-anytype-infrastructure-experiments/pkg/acl/aclchanges/aclpb" "github.com/anytypeio/go-anytype-infrastructure-experiments/pkg/acl/list" "github.com/anytypeio/go-anytype-infrastructure-experiments/pkg/acl/treestorage" - "github.com/anytypeio/go-anytype-infrastructure-experiments/pkg/acl/treestorage/treepb" "github.com/anytypeio/go-anytype-infrastructure-experiments/util/cid" "github.com/gogo/protobuf/proto" "time" @@ -96,7 +95,7 @@ func CreateNewTreeStorage( Signature: signature, Id: changeId, } - header, treeId, err := createTreeHeaderAndId(rawChange, treepb.TreeHeader_DocTree, aclList.ID()) + header, treeId, err := createTreeHeaderAndId(rawChange, aclpb.Header_DocTree, aclList.ID()) if err != nil { return nil, err } @@ -113,11 +112,11 @@ func CreateNewTreeStorage( return thr, nil } -func createTreeHeaderAndId(change *aclpb.RawChange, treeType treepb.TreeHeaderTreeType, aclTreeId string) (*treepb.TreeHeader, string, error) { - header := &treepb.TreeHeader{ - FirstChangeId: change.Id, - Type: treeType, - AclTreeId: aclTreeId, +func createTreeHeaderAndId(change *aclpb.RawChange, treeType aclpb.HeaderDocType, aclListId string) (*aclpb.Header, string, error) { + header := &aclpb.Header{ + FirstId: change.Id, + DocType: treeType, + AclListId: aclListId, } marshalledHeader, err := proto.Marshal(header) if err != nil { diff --git a/pkg/acl/treestorage/inmemory.go b/pkg/acl/treestorage/inmemory.go index 7025a701..1fd98e7a 100644 --- a/pkg/acl/treestorage/inmemory.go +++ b/pkg/acl/treestorage/inmemory.go @@ -3,16 +3,13 @@ package treestorage import ( "context" "fmt" - "github.com/anytypeio/go-anytype-infrastructure-experiments/pkg/acl/aclchanges" "github.com/anytypeio/go-anytype-infrastructure-experiments/pkg/acl/aclchanges/aclpb" - "github.com/anytypeio/go-anytype-infrastructure-experiments/pkg/acl/treestorage/treepb" - "github.com/anytypeio/go-anytype-infrastructure-experiments/util/slice" "sync" ) type inMemoryTreeStorage struct { id string - header *treepb.TreeHeader + header *aclpb.Header heads []string orphans []string changes map[string]*aclpb.RawChange @@ -20,11 +17,11 @@ type inMemoryTreeStorage struct { sync.RWMutex } -type CreatorFunc = func(string, *treepb.TreeHeader, []*aclpb.RawChange) (TreeStorage, error) +type CreatorFunc = func(string, *aclpb.Header, []*aclpb.RawChange) (TreeStorage, error) func NewInMemoryTreeStorage( treeId string, - header *treepb.TreeHeader, + header *aclpb.Header, changes []*aclpb.RawChange) (TreeStorage, error) { allChanges := make(map[string]*aclpb.RawChange) var orphans []string @@ -43,13 +40,13 @@ func NewInMemoryTreeStorage( }, nil } -func (t *inMemoryTreeStorage) TreeID() (string, error) { +func (t *inMemoryTreeStorage) ID() (string, error) { t.RLock() defer t.RUnlock() return t.id, nil } -func (t *inMemoryTreeStorage) Header() (*treepb.TreeHeader, error) { +func (t *inMemoryTreeStorage) Header() (*aclpb.Header, error) { t.RLock() defer t.RUnlock() return t.header, nil @@ -61,12 +58,6 @@ func (t *inMemoryTreeStorage) Heads() ([]string, error) { return t.heads, nil } -func (t *inMemoryTreeStorage) Orphans() ([]string, error) { - t.RLock() - defer t.RUnlock() - return t.orphans, nil -} - func (t *inMemoryTreeStorage) SetHeads(heads []string) error { t.Lock() defer t.Unlock() @@ -78,20 +69,6 @@ func (t *inMemoryTreeStorage) SetHeads(heads []string) error { return nil } -func (t *inMemoryTreeStorage) RemoveOrphans(orphans ...string) error { - t.Lock() - defer t.Unlock() - t.orphans = slice.Difference(t.orphans, orphans) - return nil -} - -func (t *inMemoryTreeStorage) AddOrphans(orphans ...string) error { - t.Lock() - defer t.Unlock() - t.orphans = append(t.orphans, orphans...) - return nil -} - func (t *inMemoryTreeStorage) AddRawChange(change *aclpb.RawChange) error { t.Lock() defer t.Unlock() @@ -100,26 +77,7 @@ func (t *inMemoryTreeStorage) AddRawChange(change *aclpb.RawChange) error { return nil } -func (t *inMemoryTreeStorage) AddChange(change aclchanges.Change) error { - t.Lock() - defer t.Unlock() - signature := change.Signature() - id := change.CID() - - fullMarshalledChange, err := change.ProtoChange().Marshal() - if err != nil { - return err - } - rawChange := &aclpb.RawChange{ - Payload: fullMarshalledChange, - Signature: signature, - Id: id, - } - t.changes[id] = rawChange - return nil -} - -func (t *inMemoryTreeStorage) GetChange(ctx context.Context, changeId string) (*aclpb.RawChange, error) { +func (t *inMemoryTreeStorage) GetRawChange(ctx context.Context, changeId string) (*aclpb.RawChange, error) { t.RLock() defer t.RUnlock() if res, exists := t.changes[changeId]; exists { @@ -142,7 +100,7 @@ func (i *inMemoryTreeStorageProvider) TreeStorage(treeId string) (TreeStorage, e return nil, ErrUnknownTreeId } -func (i *inMemoryTreeStorageProvider) CreateTreeStorage(treeId string, header *treepb.TreeHeader, changes []*aclpb.RawChange) (TreeStorage, error) { +func (i *inMemoryTreeStorageProvider) CreateTreeStorage(treeId string, header *aclpb.Header, changes []*aclpb.RawChange) (TreeStorage, error) { i.Lock() defer i.Unlock() res, err := NewInMemoryTreeStorage(treeId, header, changes) diff --git a/pkg/acl/treestorage/provider.go b/pkg/acl/treestorage/provider.go index 41b472e9..2a2a98e2 100644 --- a/pkg/acl/treestorage/provider.go +++ b/pkg/acl/treestorage/provider.go @@ -3,12 +3,11 @@ package treestorage import ( "errors" "github.com/anytypeio/go-anytype-infrastructure-experiments/pkg/acl/aclchanges/aclpb" - "github.com/anytypeio/go-anytype-infrastructure-experiments/pkg/acl/treestorage/treepb" ) var ErrUnknownTreeId = errors.New("tree does not exist") type Provider interface { TreeStorage(treeId string) (TreeStorage, error) - CreateTreeStorage(treeId string, header *treepb.TreeHeader, changes []*aclpb.RawChange) (TreeStorage, error) + CreateTreeStorage(treeId string, header *aclpb.Header, changes []*aclpb.RawChange) (TreeStorage, error) } diff --git a/pkg/acl/treestorage/storage.go b/pkg/acl/treestorage/storage.go index df47d809..bc3f5406 100644 --- a/pkg/acl/treestorage/storage.go +++ b/pkg/acl/treestorage/storage.go @@ -2,24 +2,16 @@ package treestorage import ( "context" - "github.com/anytypeio/go-anytype-infrastructure-experiments/pkg/acl/aclchanges" "github.com/anytypeio/go-anytype-infrastructure-experiments/pkg/acl/aclchanges/aclpb" - "github.com/anytypeio/go-anytype-infrastructure-experiments/pkg/acl/treestorage/treepb" ) type TreeStorage interface { - TreeID() (string, error) + ID() (string, error) - Header() (*treepb.TreeHeader, error) + Header() (*aclpb.Header, error) Heads() ([]string, error) - Orphans() ([]string, error) SetHeads(heads []string) error - RemoveOrphans(orphan ...string) error - AddOrphans(orphan ...string) error AddRawChange(change *aclpb.RawChange) error - AddChange(change aclchanges.Change) error - - // TODO: have methods with raw changes also - GetChange(ctx context.Context, recordID string) (*aclpb.RawChange, error) + GetRawChange(ctx context.Context, recordID string) (*aclpb.RawChange, error) } diff --git a/pkg/acl/treestorage/treepb/protos/tree.proto b/pkg/acl/treestorage/treepb/protos/tree.proto deleted file mode 100644 index 419dd19f..00000000 --- a/pkg/acl/treestorage/treepb/protos/tree.proto +++ /dev/null @@ -1,16 +0,0 @@ -syntax = "proto3"; -package tree; -option go_package = "treepb"; - -message TreeHeader { - string firstChangeId = 1; - bool isWorkspace = 2; - TreeType type = 3; - string aclTreeId = 4; - // TODO: add user identity, signature and nano timestamp - - enum TreeType { - ACLTree = 0; - DocTree = 1; - } -} \ No newline at end of file diff --git a/pkg/acl/treestorage/treepb/tree.pb.go b/pkg/acl/treestorage/treepb/tree.pb.go deleted file mode 100644 index aa0838ef..00000000 --- a/pkg/acl/treestorage/treepb/tree.pb.go +++ /dev/null @@ -1,474 +0,0 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: pkg/acl/treestorage/treepb/protos/tree.proto - -package treepb - -import ( - fmt "fmt" - proto "github.com/gogo/protobuf/proto" - io "io" - math "math" - math_bits "math/bits" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package - -type TreeHeaderTreeType int32 - -const ( - TreeHeader_ACLTree TreeHeaderTreeType = 0 - TreeHeader_DocTree TreeHeaderTreeType = 1 -) - -var TreeHeaderTreeType_name = map[int32]string{ - 0: "ACLTree", - 1: "DocTree", -} - -var TreeHeaderTreeType_value = map[string]int32{ - "ACLTree": 0, - "DocTree": 1, -} - -func (x TreeHeaderTreeType) String() string { - return proto.EnumName(TreeHeaderTreeType_name, int32(x)) -} - -func (TreeHeaderTreeType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_e7d760b855878644, []int{0, 0} -} - -type TreeHeader struct { - FirstChangeId string `protobuf:"bytes,1,opt,name=firstChangeId,proto3" json:"firstChangeId,omitempty"` - IsWorkspace bool `protobuf:"varint,2,opt,name=isWorkspace,proto3" json:"isWorkspace,omitempty"` - Type TreeHeaderTreeType `protobuf:"varint,3,opt,name=type,proto3,enum=tree.TreeHeaderTreeType" json:"type,omitempty"` - AclTreeId string `protobuf:"bytes,4,opt,name=aclTreeId,proto3" json:"aclTreeId,omitempty"` -} - -func (m *TreeHeader) Reset() { *m = TreeHeader{} } -func (m *TreeHeader) String() string { return proto.CompactTextString(m) } -func (*TreeHeader) ProtoMessage() {} -func (*TreeHeader) Descriptor() ([]byte, []int) { - return fileDescriptor_e7d760b855878644, []int{0} -} -func (m *TreeHeader) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *TreeHeader) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_TreeHeader.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *TreeHeader) XXX_Merge(src proto.Message) { - xxx_messageInfo_TreeHeader.Merge(m, src) -} -func (m *TreeHeader) XXX_Size() int { - return m.Size() -} -func (m *TreeHeader) XXX_DiscardUnknown() { - xxx_messageInfo_TreeHeader.DiscardUnknown(m) -} - -var xxx_messageInfo_TreeHeader proto.InternalMessageInfo - -func (m *TreeHeader) GetFirstChangeId() string { - if m != nil { - return m.FirstChangeId - } - return "" -} - -func (m *TreeHeader) GetIsWorkspace() bool { - if m != nil { - return m.IsWorkspace - } - return false -} - -func (m *TreeHeader) GetType() TreeHeaderTreeType { - if m != nil { - return m.Type - } - return TreeHeader_ACLTree -} - -func (m *TreeHeader) GetAclTreeId() string { - if m != nil { - return m.AclTreeId - } - return "" -} - -func init() { - proto.RegisterEnum("tree.TreeHeaderTreeType", TreeHeaderTreeType_name, TreeHeaderTreeType_value) - proto.RegisterType((*TreeHeader)(nil), "tree.TreeHeader") -} - -func init() { - proto.RegisterFile("pkg/acl/treestorage/treepb/protos/tree.proto", fileDescriptor_e7d760b855878644) -} - -var fileDescriptor_e7d760b855878644 = []byte{ - // 237 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xd2, 0x29, 0xc8, 0x4e, 0xd7, - 0x4f, 0x4c, 0xce, 0xd1, 0x2f, 0x29, 0x4a, 0x4d, 0x2d, 0x2e, 0xc9, 0x2f, 0x4a, 0x4c, 0x4f, 0x05, - 0xb3, 0x0b, 0x92, 0xf4, 0x0b, 0x8a, 0xf2, 0x4b, 0xf2, 0x8b, 0xc1, 0x3c, 0x3d, 0x30, 0x5b, 0x88, - 0x05, 0xc4, 0x56, 0x3a, 0xce, 0xc8, 0xc5, 0x15, 0x52, 0x94, 0x9a, 0xea, 0x91, 0x9a, 0x98, 0x92, - 0x5a, 0x24, 0xa4, 0xc2, 0xc5, 0x9b, 0x96, 0x59, 0x54, 0x5c, 0xe2, 0x9c, 0x91, 0x98, 0x97, 0x9e, - 0xea, 0x99, 0x22, 0xc1, 0xa8, 0xc0, 0xa8, 0xc1, 0x19, 0x84, 0x2a, 0x28, 0xa4, 0xc0, 0xc5, 0x9d, - 0x59, 0x1c, 0x9e, 0x5f, 0x94, 0x5d, 0x5c, 0x90, 0x98, 0x9c, 0x2a, 0xc1, 0xa4, 0xc0, 0xa8, 0xc1, - 0x11, 0x84, 0x2c, 0x24, 0xa4, 0xcb, 0xc5, 0x52, 0x52, 0x59, 0x90, 0x2a, 0xc1, 0xac, 0xc0, 0xa8, - 0xc1, 0x67, 0x24, 0xa9, 0x07, 0xb6, 0x17, 0x61, 0x0f, 0x98, 0x19, 0x52, 0x59, 0x90, 0x1a, 0x04, - 0x56, 0x26, 0x24, 0xc3, 0xc5, 0x99, 0x98, 0x9c, 0x03, 0x12, 0xf4, 0x4c, 0x91, 0x60, 0x01, 0x5b, - 0x89, 0x10, 0x50, 0x52, 0xe1, 0xe2, 0x80, 0xa9, 0x17, 0xe2, 0xe6, 0x62, 0x77, 0x74, 0xf6, 0x01, - 0x71, 0x05, 0x18, 0x40, 0x1c, 0x97, 0xfc, 0x64, 0x30, 0x87, 0xd1, 0x49, 0xe1, 0xc4, 0x23, 0x39, - 0xc6, 0x0b, 0x8f, 0xe4, 0x18, 0x1f, 0x3c, 0x92, 0x63, 0x9c, 0xf0, 0x58, 0x8e, 0xe1, 0xc2, 0x63, - 0x39, 0x86, 0x1b, 0x8f, 0xe5, 0x18, 0xa2, 0xd8, 0x20, 0x61, 0x90, 0xc4, 0x06, 0xf6, 0xb8, 0x31, - 0x20, 0x00, 0x00, 0xff, 0xff, 0x0c, 0x86, 0x4d, 0x81, 0x28, 0x01, 0x00, 0x00, -} - -func (m *TreeHeader) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *TreeHeader) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *TreeHeader) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.AclTreeId) > 0 { - i -= len(m.AclTreeId) - copy(dAtA[i:], m.AclTreeId) - i = encodeVarintTree(dAtA, i, uint64(len(m.AclTreeId))) - i-- - dAtA[i] = 0x22 - } - if m.Type != 0 { - i = encodeVarintTree(dAtA, i, uint64(m.Type)) - i-- - dAtA[i] = 0x18 - } - if m.IsWorkspace { - i-- - if m.IsWorkspace { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } - i-- - dAtA[i] = 0x10 - } - if len(m.FirstChangeId) > 0 { - i -= len(m.FirstChangeId) - copy(dAtA[i:], m.FirstChangeId) - i = encodeVarintTree(dAtA, i, uint64(len(m.FirstChangeId))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func encodeVarintTree(dAtA []byte, offset int, v uint64) int { - offset -= sovTree(v) - base := offset - for v >= 1<<7 { - dAtA[offset] = uint8(v&0x7f | 0x80) - v >>= 7 - offset++ - } - dAtA[offset] = uint8(v) - return base -} -func (m *TreeHeader) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.FirstChangeId) - if l > 0 { - n += 1 + l + sovTree(uint64(l)) - } - if m.IsWorkspace { - n += 2 - } - if m.Type != 0 { - n += 1 + sovTree(uint64(m.Type)) - } - l = len(m.AclTreeId) - if l > 0 { - n += 1 + l + sovTree(uint64(l)) - } - return n -} - -func sovTree(x uint64) (n int) { - return (math_bits.Len64(x|1) + 6) / 7 -} -func sozTree(x uint64) (n int) { - return sovTree(uint64((x << 1) ^ uint64((int64(x) >> 63)))) -} -func (m *TreeHeader) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTree - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: TreeHeader: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: TreeHeader: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field FirstChangeId", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTree - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTree - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTree - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.FirstChangeId = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field IsWorkspace", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTree - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.IsWorkspace = bool(v != 0) - case 3: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) - } - m.Type = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTree - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.Type |= TreeHeaderTreeType(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AclTreeId", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTree - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTree - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTree - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.AclTreeId = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipTree(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTree - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func skipTree(dAtA []byte) (n int, err error) { - l := len(dAtA) - iNdEx := 0 - depth := 0 - for iNdEx < l { - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowTree - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - wireType := int(wire & 0x7) - switch wireType { - case 0: - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowTree - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - iNdEx++ - if dAtA[iNdEx-1] < 0x80 { - break - } - } - case 1: - iNdEx += 8 - case 2: - var length int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowTree - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - length |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if length < 0 { - return 0, ErrInvalidLengthTree - } - iNdEx += length - case 3: - depth++ - case 4: - if depth == 0 { - return 0, ErrUnexpectedEndOfGroupTree - } - depth-- - case 5: - iNdEx += 4 - default: - return 0, fmt.Errorf("proto: illegal wireType %d", wireType) - } - if iNdEx < 0 { - return 0, ErrInvalidLengthTree - } - if depth == 0 { - return iNdEx, nil - } - } - return 0, io.ErrUnexpectedEOF -} - -var ( - ErrInvalidLengthTree = fmt.Errorf("proto: negative length found during unmarshaling") - ErrIntOverflowTree = fmt.Errorf("proto: integer overflow") - ErrUnexpectedEndOfGroupTree = fmt.Errorf("proto: unexpected end of group") -) diff --git a/service/document/service.go b/service/document/service.go index ccd4a3aa..33e6a271 100644 --- a/service/document/service.go +++ b/service/document/service.go @@ -195,7 +195,7 @@ func (s *service) CreateDocumentTree(ctx context.Context, aclTreeId string, text return err } - id, err = doc.TreeID() + id, err = doc.ID() if err != nil { return err } @@ -207,7 +207,7 @@ func (s *service) CreateDocumentTree(ctx context.Context, aclTreeId string, text heads = []string{header.FirstChangeId} snapshotPath = []string{header.FirstChangeId} - ch, err = doc.GetChange(ctx, header.FirstChangeId) + ch, err = doc.GetRawChange(ctx, header.FirstChangeId) if err != nil { return err }