From 49a9edfe6c488f1f8773decebcd3d7b6c6774d28 Mon Sep 17 00:00:00 2001 From: mcrakhman Date: Thu, 14 Jul 2022 11:21:52 +0200 Subject: [PATCH] Add context to acl tree --- pkg/acl/acltree/acltree.go | 9 +++++---- pkg/acl/acltree/acltree_test.go | 5 +++-- pkg/acl/example/plaintextdocument/document.go | 7 ++++--- pkg/acl/example/plaintextdocument/document_test.go | 5 +++-- 4 files changed, 15 insertions(+), 11 deletions(-) diff --git a/pkg/acl/acltree/acltree.go b/pkg/acl/acltree/acltree.go index 27d0a1fc..2b7ae436 100644 --- a/pkg/acl/acltree/acltree.go +++ b/pkg/acl/acltree/acltree.go @@ -1,6 +1,7 @@ package acltree import ( + "context" "github.com/anytypeio/go-anytype-infrastructure-experiments/pkg/acl/account" "github.com/anytypeio/go-anytype-infrastructure-experiments/pkg/acl/treestorage" "sync" @@ -28,8 +29,8 @@ type TreeUpdateListener interface { type ACLTree interface { ACLState() *ACLState - AddContent(f func(builder ChangeBuilder) error) (*Change, error) - AddChanges(changes ...*Change) (AddResult, error) + AddContent(ctx context.Context, f func(builder ChangeBuilder) error) (*Change, error) + AddChanges(ctx context.Context, changes ...*Change) (AddResult, error) Heads() []string Root() *Change Iterate(func(change *Change) bool) @@ -197,7 +198,7 @@ func (a *aclTree) ACLState() *ACLState { return a.aclState } -func (a *aclTree) AddContent(build func(builder ChangeBuilder) error) (*Change, error) { +func (a *aclTree) AddContent(ctx context.Context, build func(builder ChangeBuilder) error) (*Change, error) { // TODO: add snapshot creation logic a.Lock() defer func() { @@ -234,7 +235,7 @@ func (a *aclTree) AddContent(build func(builder ChangeBuilder) error) (*Change, return ch, nil } -func (a *aclTree) AddChanges(changes ...*Change) (AddResult, error) { +func (a *aclTree) AddChanges(ctx context.Context, changes ...*Change) (AddResult, error) { a.Lock() // TODO: make proper error handling, because there are a lot of corner cases where this will break var err error diff --git a/pkg/acl/acltree/acltree_test.go b/pkg/acl/acltree/acltree_test.go index 98d72b1c..ef97731a 100644 --- a/pkg/acl/acltree/acltree_test.go +++ b/pkg/acl/acltree/acltree_test.go @@ -1,6 +1,7 @@ package acltree import ( + "context" "github.com/anytypeio/go-anytype-infrastructure-experiments/pkg/acl/account" "github.com/anytypeio/go-anytype-infrastructure-experiments/pkg/acl/aclchanges/pb" "github.com/anytypeio/go-anytype-infrastructure-experiments/pkg/acl/testutils/treestoragebuilder" @@ -78,7 +79,7 @@ func TestACLTree_UserJoinUpdate_Append(t *testing.T) { changes = append(changes, newCh) } - res, err := tree.AddChanges(changes...) + res, err := tree.AddChanges(context.Background(), changes...) assert.Equal(t, res.Summary, AddResultSummaryAppend) aclState := tree.ACLState() @@ -128,7 +129,7 @@ func TestACLTree_UserJoinUpdate_Rebuild(t *testing.T) { changes = append(changes, newCh) } - res, err := tree.AddChanges(changes...) + res, err := tree.AddChanges(context.Background(), changes...) assert.Equal(t, res.Summary, AddResultSummaryRebuild) aclState := tree.ACLState() diff --git a/pkg/acl/example/plaintextdocument/document.go b/pkg/acl/example/plaintextdocument/document.go index 48bd9cf3..e822bdc4 100644 --- a/pkg/acl/example/plaintextdocument/document.go +++ b/pkg/acl/example/plaintextdocument/document.go @@ -1,6 +1,7 @@ package plaintextdocument import ( + "context" "fmt" "github.com/anytypeio/go-anytype-infrastructure-experiments/pkg/acl/account" aclpb "github.com/anytypeio/go-anytype-infrastructure-experiments/pkg/acl/aclchanges/pb" @@ -13,7 +14,7 @@ import ( type PlainTextDocument interface { Text() string - AddText(text string) error + AddText(ctx context.Context, text string) error } type plainTextDocument struct { @@ -29,8 +30,8 @@ func (p *plainTextDocument) Text() string { return "" } -func (p *plainTextDocument) AddText(text string) error { - _, err := p.aclTree.AddContent(func(builder acltree.ChangeBuilder) error { +func (p *plainTextDocument) AddText(ctx context.Context, text string) error { + _, err := p.aclTree.AddContent(ctx, func(builder acltree.ChangeBuilder) error { builder.AddChangeContent( &pb.PlainTextChangeData{ Content: []*pb.PlainTextChangeContent{ diff --git a/pkg/acl/example/plaintextdocument/document_test.go b/pkg/acl/example/plaintextdocument/document_test.go index daddebfd..9f523fa7 100644 --- a/pkg/acl/example/plaintextdocument/document_test.go +++ b/pkg/acl/example/plaintextdocument/document_test.go @@ -1,6 +1,7 @@ package plaintextdocument import ( + "context" "github.com/anytypeio/go-anytype-infrastructure-experiments/pkg/acl/account" "github.com/anytypeio/go-anytype-infrastructure-experiments/pkg/acl/testutils/treestoragebuilder" "github.com/anytypeio/go-anytype-infrastructure-experiments/pkg/acl/treestorage" @@ -43,13 +44,13 @@ func TestDocument_PlainTextDocument_AddText(t *testing.T) { t.Fatalf("should not create document with error: %v", err) } - err = doc.AddText("Next") + err = doc.AddText(context.Background(), "Next") if err != nil { t.Fatalf("should be able to add document: %v", err) } assert.Equal(t, doc.Text(), "Some text|Next") - err = doc.AddText("Shmext") + err = doc.AddText(context.Background(), "Shmext") if err != nil { t.Fatalf("should be able to add document: %v", err) }