diff --git a/core/filestorage/filesync/filesync_test.go b/core/filestorage/filesync/filesync_test.go index b421a66ab..8ca492f36 100644 --- a/core/filestorage/filesync/filesync_test.go +++ b/core/filestorage/filesync/filesync_test.go @@ -29,6 +29,7 @@ import ( "github.com/anytypeio/go-anytype-middleware/pb" "github.com/anytypeio/go-anytype-middleware/pkg/lib/datastore" "github.com/anytypeio/go-anytype-middleware/pkg/lib/localstore/filestore" + "github.com/anytypeio/go-anytype-middleware/pkg/lib/pb/storage" ) var ctx = context.Background() @@ -44,6 +45,9 @@ func TestFileSync_AddFile(t *testing.T) { fileId := n.Cid().String() spaceId := "spaceId" + fx.fileStoreMock.EXPECT().ListByTarget(fileId).Return([]*storage.FileInfo{ + {}, // We can use just empty struct here, because we don't use any fields + }, nil).AnyTimes() // TODO Test when limit is reached fx.rpcStore.EXPECT().CheckAvailability(gomock.Any(), spaceId, gomock.Any()).DoAndReturn(func(_ context.Context, _ string, cids []cid.Cid) ([]*fileproto.BlockAvailability, error) { res := lo.Map(cids, func(c cid.Cid, _ int) *fileproto.BlockAvailability { diff --git a/pkg/lib/localstore/filestore/files.go b/pkg/lib/localstore/filestore/files.go index 99f416a5c..c37a343ae 100644 --- a/pkg/lib/localstore/filestore/files.go +++ b/pkg/lib/localstore/filestore/files.go @@ -91,14 +91,9 @@ type FileStore interface { GetBySource(mill string, source string, opts string) (*storage.FileInfo, error) GetByChecksum(mill string, checksum string) (*storage.FileInfo, error) AddTarget(hash string, target string) error - RemoveTarget(hash string, target string) error ListTargets() ([]string, error) ListByTarget(target string) ([]*storage.FileInfo, error) - Count() (int, error) DeleteFile(hash string) error - DeleteByTarget(targetHash string) error - DeleteFileKeys(hash string) error - ListFileKeys() ([]string, error) List() ([]*storage.FileInfo, error) RemoveEmpty() error @@ -270,7 +265,7 @@ func (m *dsFileStore) RemoveEmpty() error { } if len(v) == 0 { removed++ - err = m.DeleteFileKeys(hash) + err = m.deleteFileKeys(hash) if err != nil { log.Errorf("RemoveEmpty failed to delete empty file keys: %s", err) } @@ -282,22 +277,19 @@ func (m *dsFileStore) RemoveEmpty() error { return nil } -func (m *dsFileStore) ListFileKeys() ([]string, error) { - txn, err := m.ds.NewTransaction(true) +func (m *dsFileStore) deleteFileKeys(hash string) error { + txn, err := m.ds.NewTransaction(false) if err != nil { - return nil, fmt.Errorf("error when creating txn in datastore: %w", err) + return fmt.Errorf("error when creating txn in datastore: %w", err) } defer txn.Discard() - res, err := localstore.GetKeys(txn, filesKeysBase.String(), 0) + fileKeysKey := filesKeysBase.ChildString(hash) + err = txn.Delete(fileKeysKey) if err != nil { - return nil, err + return err } - return localstore.ExtractKeysFromResults(res) -} - -func (m *dsFileStore) DeleteFileKeys(hash string) error { - return nil + return txn.Commit() } func (m *dsFileStore) addSingleFileKeys(txn ds.Txn, hash string, keys map[string]string) error { @@ -380,38 +372,6 @@ func (m *dsFileStore) AddTarget(hash string, target string) error { return m.ds.Put(fileInfoKey, b) } -func (m *dsFileStore) RemoveTarget(hash string, target string) error { - // lock to protect from race conds - m.l.Lock() - defer m.l.Unlock() - - file, err := m.GetByHash(hash) - if err != nil { - return err - } - - var filtered []string - for _, et := range file.Targets { - if et != target { - filtered = append(filtered, et) - } - } - - if len(filtered) == len(file.Targets) { - return nil - } - file.Targets = filtered - - b, err := proto.Marshal(file) - if err != nil { - return err - } - - fileInfoKey := filesInfoBase.ChildString(file.Hash) - - return m.ds.Put(fileInfoKey, b) -} - func (m *dsFileStore) GetByHash(hash string) (*storage.FileInfo, error) { fileInfoKey := filesInfoBase.ChildString(hash) b, err := m.ds.Get(fileInfoKey) @@ -557,15 +517,6 @@ func (m *dsFileStore) listByTarget(target string, txn ds.Txn) ([]*storage.FileIn return files, nil } -func (m *dsFileStore) Count() (int, error) { - count, err := m.ds.GetSize(filesInfoBase) - if err != nil { - return 0, err - } - - return count, nil -} - func (m *dsFileStore) List() ([]*storage.FileInfo, error) { var infos []*storage.FileInfo txn, err := m.ds.NewTransaction(true) @@ -647,10 +598,6 @@ func (m *dsFileStore) DeleteFile(hash string) error { return txn.Commit() } -func (m *dsFileStore) DeleteByTarget(targetHash string) error { - return nil -} - func (m *dsFileStore) deleteFile(txn ds.Txn, file *storage.FileInfo) error { err := localstore.RemoveIndexes(m, m.ds, file, file.Hash) if err != nil {