From 86ba8e33d07f7e721affd6b164fea56499a536b7 Mon Sep 17 00:00:00 2001 From: mcrakhman Date: Mon, 5 Dec 2022 23:04:56 +0100 Subject: [PATCH] More fixes to settingsdocument --- .../settingsdocument/settingsdocument.go | 17 +++++++++++++++++ .../settingsdocument/settingsdocument_test.go | 2 ++ 2 files changed, 19 insertions(+) diff --git a/common/commonspace/settingsdocument/settingsdocument.go b/common/commonspace/settingsdocument/settingsdocument.go index 644fd692..f8f3fda6 100644 --- a/common/commonspace/settingsdocument/settingsdocument.go +++ b/common/commonspace/settingsdocument/settingsdocument.go @@ -3,6 +3,7 @@ package settingsdocument import ( "context" + "errors" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/account" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/app/logger" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/settingsdocument/deletionstate" @@ -22,6 +23,12 @@ type SettingsDocument interface { DeleteObject(id string) (err error) } +var ( + ErrDeleteSelf = errors.New("cannot delete seld") + ErrAlreadyDeleted = errors.New("the document is already deleted") + ErrDocDoesNotExist = errors.New("the document does not exist") +) + type BuildTreeFunc func(ctx context.Context, id string, listener updatelistener.UpdateListener) (t synctree.SyncTree, err error) type Deps struct { @@ -129,9 +136,19 @@ func (s *settingsDocument) Close() error { func (s *settingsDocument) DeleteObject(id string) (err error) { s.Lock() defer s.Unlock() + if s.ID() == id { + err = ErrDeleteSelf + return + } if s.deletionState.Exists(id) { + err = ErrAlreadyDeleted return nil } + _, err = s.store.TreeStorage(id) + if err != nil { + err = ErrDocDoesNotExist + return + } // TODO: add snapshot logic res, err := s.deletionState.CreateDeleteChange(id, false) diff --git a/common/commonspace/settingsdocument/settingsdocument_test.go b/common/commonspace/settingsdocument/settingsdocument_test.go index d69e0fbc..8b69fe7a 100644 --- a/common/commonspace/settingsdocument/settingsdocument_test.go +++ b/common/commonspace/settingsdocument/settingsdocument_test.go @@ -129,7 +129,9 @@ func TestSettingsDocument_DeleteObject(t *testing.T) { delId := "delId" + fx.syncTree.EXPECT().ID().Return("syncId") fx.delState.EXPECT().Exists(delId).Return(false) + fx.spaceStorage.EXPECT().TreeStorage(delId).Return(nil, nil) res := []byte("settingsData") fx.delState.EXPECT().CreateDeleteChange(delId, false).Return(res, nil)