More fixes to settingsdocument

This commit is contained in:
mcrakhman 2022-12-05 23:04:56 +01:00 committed by Mikhail Iudin
parent 6bf8864f5a
commit 86ba8e33d0
No known key found for this signature in database
GPG Key ID: FAAAA8BAABDFF1C0
2 changed files with 19 additions and 0 deletions

View File

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

View File

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