mirror of
https://github.com/anyproto/anytype-heart.git
synced 2025-06-10 01:51:07 +09:00
GO-3514: add internal key provider interface
Signed-off-by: AnastasiaShemyakinskaya <shem98a@mail.ru>
This commit is contained in:
parent
6e6802294e
commit
38f10f94d1
12 changed files with 98 additions and 70 deletions
|
@ -13,6 +13,7 @@ import (
|
|||
"github.com/anyproto/anytype-heart/core/domain"
|
||||
"github.com/anyproto/anytype-heart/core/domain/objectorigin"
|
||||
"github.com/anyproto/anytype-heart/pkg/lib/bundle"
|
||||
sb "github.com/anyproto/anytype-heart/pkg/lib/core/smartblock"
|
||||
"github.com/anyproto/anytype-heart/pkg/lib/database"
|
||||
"github.com/anyproto/anytype-heart/pkg/lib/localstore/objectstore"
|
||||
"github.com/anyproto/anytype-heart/pkg/lib/pb/model"
|
||||
|
@ -24,26 +25,27 @@ type derivedObject struct {
|
|||
existingObject *existingObject
|
||||
spaceService space.Service
|
||||
objectStore objectstore.ObjectStore
|
||||
internalKey string
|
||||
}
|
||||
|
||||
func newDerivedObject(existingObject *existingObject, spaceService space.Service, objectStore objectstore.ObjectStore) *derivedObject {
|
||||
return &derivedObject{existingObject: existingObject, spaceService: spaceService, objectStore: objectStore}
|
||||
}
|
||||
|
||||
func (d *derivedObject) GetIDAndPayload(ctx context.Context, spaceID string, sn *common.Snapshot, createdTime time.Time, getExisting bool, origin objectorigin.ObjectOrigin) (string, treestorage.TreeStorageCreatePayload, string, error) {
|
||||
func (d *derivedObject) GetIDAndPayload(ctx context.Context, spaceID string, sn *common.Snapshot, _ time.Time, getExisting bool, _ objectorigin.ObjectOrigin) (string, treestorage.TreeStorageCreatePayload, error) {
|
||||
id, payload, err := d.existingObject.GetIDAndPayload(ctx, spaceID, sn, getExisting)
|
||||
if err != nil {
|
||||
return "", treestorage.TreeStorageCreatePayload{}, "", err
|
||||
return "", treestorage.TreeStorageCreatePayload{}, err
|
||||
}
|
||||
if id != "" {
|
||||
return id, payload, "", nil
|
||||
return id, payload, nil
|
||||
}
|
||||
rawUniqueKey := pbtypes.GetString(sn.Snapshot.Data.Details, bundle.RelationKeyUniqueKey.String())
|
||||
uniqueKey, err := domain.UnmarshalUniqueKey(rawUniqueKey)
|
||||
if err != nil {
|
||||
uniqueKey, err = domain.NewUniqueKey(sn.SbType, sn.Snapshot.Data.Key)
|
||||
if err != nil {
|
||||
return "", treestorage.TreeStorageCreatePayload{}, "", fmt.Errorf("create unique key from %s and %q: %w", sn.SbType, sn.Snapshot.Data.Key, err)
|
||||
return "", treestorage.TreeStorageCreatePayload{}, fmt.Errorf("create unique key from %s and %q: %w", sn.SbType, sn.Snapshot.Data.Key, err)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -52,20 +54,24 @@ func (d *derivedObject) GetIDAndPayload(ctx context.Context, spaceID string, sn
|
|||
key = bson.NewObjectId().Hex()
|
||||
uniqueKey, err = domain.NewUniqueKey(sn.SbType, key)
|
||||
if err != nil {
|
||||
return "", treestorage.TreeStorageCreatePayload{}, "", fmt.Errorf("create unique key from %s and %q: %w", sn.SbType, key, err)
|
||||
return "", treestorage.TreeStorageCreatePayload{}, fmt.Errorf("create unique key from %s: %w", sn.SbType, err)
|
||||
}
|
||||
}
|
||||
d.internalKey = key
|
||||
spc, err := d.spaceService.Get(ctx, spaceID)
|
||||
if err != nil {
|
||||
return "", treestorage.TreeStorageCreatePayload{}, "", fmt.Errorf("get space : %w", err)
|
||||
return "", treestorage.TreeStorageCreatePayload{}, fmt.Errorf("get space : %w", err)
|
||||
}
|
||||
payload, err = spc.DeriveTreePayload(ctx, payloadcreator.PayloadDerivationParams{
|
||||
Key: uniqueKey,
|
||||
})
|
||||
if err != nil {
|
||||
return "", treestorage.TreeStorageCreatePayload{}, "", fmt.Errorf("derive tree create payload: %w", err)
|
||||
return "", treestorage.TreeStorageCreatePayload{}, fmt.Errorf("derive tree create payload: %w", err)
|
||||
}
|
||||
return payload.RootRawChange.Id, payload, key, nil
|
||||
return payload.RootRawChange.Id, payload, nil
|
||||
}
|
||||
func (d *derivedObject) GetInternalKey(sbType sb.SmartBlockType) string {
|
||||
return d.internalKey
|
||||
}
|
||||
|
||||
func (d *derivedObject) isDeletedObject(uniqueKey string) bool {
|
||||
|
|
|
@ -59,11 +59,11 @@ func TestDerivedObject_GetIDAndPayload(t *testing.T) {
|
|||
})
|
||||
|
||||
// when
|
||||
id, _, key, err := deriveObject.GetIDAndPayload(context.Background(), "spaceId", sn, time.Now(), false, objectorigin.Import(model.Import_Pb))
|
||||
id, _, err := deriveObject.GetIDAndPayload(context.Background(), "spaceId", sn, time.Now(), false, objectorigin.Import(model.Import_Pb))
|
||||
|
||||
// then
|
||||
assert.Nil(t, err)
|
||||
assert.NotEqual(t, key, "key")
|
||||
assert.NotEqual(t, deriveObject.GetInternalKey(sn.SbType), "key")
|
||||
assert.Equal(t, "newId", id)
|
||||
})
|
||||
}
|
||||
|
|
|
@ -20,10 +20,10 @@ type fileObject struct {
|
|||
blockService *block.Service
|
||||
}
|
||||
|
||||
func (o *fileObject) GetIDAndPayload(ctx context.Context, spaceId string, sn *common.Snapshot, timestamp time.Time, getExisting bool, origin objectorigin.ObjectOrigin) (string, treestorage.TreeStorageCreatePayload, string, error) {
|
||||
id, payload, _, err := o.treeObject.GetIDAndPayload(ctx, spaceId, sn, timestamp, getExisting, origin)
|
||||
func (o *fileObject) GetIDAndPayload(ctx context.Context, spaceId string, sn *common.Snapshot, timestamp time.Time, getExisting bool, origin objectorigin.ObjectOrigin) (string, treestorage.TreeStorageCreatePayload, error) {
|
||||
id, payload, err := o.treeObject.GetIDAndPayload(ctx, spaceId, sn, timestamp, getExisting, origin)
|
||||
if err != nil {
|
||||
return "", treestorage.TreeStorageCreatePayload{}, "", err
|
||||
return "", treestorage.TreeStorageCreatePayload{}, err
|
||||
}
|
||||
|
||||
filePath := pbtypes.GetString(sn.Snapshot.Data.Details, bundle.RelationKeySource.String())
|
||||
|
@ -39,9 +39,9 @@ func (o *fileObject) GetIDAndPayload(ctx context.Context, spaceId string, sn *co
|
|||
fileObjectId, err := uploadFile(ctx, o.blockService, spaceId, name, filePath, origin, encryptionKeys)
|
||||
if err != nil {
|
||||
log.Error("handling file object: upload file", zap.Error(err))
|
||||
return id, payload, "", nil
|
||||
return id, payload, nil
|
||||
}
|
||||
return fileObjectId, treestorage.TreeStorageCreatePayload{}, "", nil
|
||||
return fileObjectId, treestorage.TreeStorageCreatePayload{}, nil
|
||||
}
|
||||
return id, payload, "", nil
|
||||
return id, payload, nil
|
||||
}
|
||||
|
|
|
@ -30,7 +30,7 @@ func (_m *MockIDProvider) EXPECT() *MockIDProvider_Expecter {
|
|||
}
|
||||
|
||||
// GetIDAndPayload provides a mock function with given fields: ctx, spaceID, sn, createdTime, getExisting, origin
|
||||
func (_m *MockIDProvider) GetIDAndPayload(ctx context.Context, spaceID string, sn *common.Snapshot, createdTime time.Time, getExisting bool, origin objectorigin.ObjectOrigin) (string, treestorage.TreeStorageCreatePayload, string, error) {
|
||||
func (_m *MockIDProvider) GetIDAndPayload(ctx context.Context, spaceID string, sn *common.Snapshot, createdTime time.Time, getExisting bool, origin objectorigin.ObjectOrigin) (string, treestorage.TreeStorageCreatePayload, error) {
|
||||
ret := _m.Called(ctx, spaceID, sn, createdTime, getExisting, origin)
|
||||
|
||||
if len(ret) == 0 {
|
||||
|
@ -39,9 +39,8 @@ func (_m *MockIDProvider) GetIDAndPayload(ctx context.Context, spaceID string, s
|
|||
|
||||
var r0 string
|
||||
var r1 treestorage.TreeStorageCreatePayload
|
||||
var r2 string
|
||||
var r3 error
|
||||
if rf, ok := ret.Get(0).(func(context.Context, string, *common.Snapshot, time.Time, bool, objectorigin.ObjectOrigin) (string, treestorage.TreeStorageCreatePayload, string, error)); ok {
|
||||
var r2 error
|
||||
if rf, ok := ret.Get(0).(func(context.Context, string, *common.Snapshot, time.Time, bool, objectorigin.ObjectOrigin) (string, treestorage.TreeStorageCreatePayload, error)); ok {
|
||||
return rf(ctx, spaceID, sn, createdTime, getExisting, origin)
|
||||
}
|
||||
if rf, ok := ret.Get(0).(func(context.Context, string, *common.Snapshot, time.Time, bool, objectorigin.ObjectOrigin) string); ok {
|
||||
|
@ -56,19 +55,13 @@ func (_m *MockIDProvider) GetIDAndPayload(ctx context.Context, spaceID string, s
|
|||
r1 = ret.Get(1).(treestorage.TreeStorageCreatePayload)
|
||||
}
|
||||
|
||||
if rf, ok := ret.Get(2).(func(context.Context, string, *common.Snapshot, time.Time, bool, objectorigin.ObjectOrigin) string); ok {
|
||||
if rf, ok := ret.Get(2).(func(context.Context, string, *common.Snapshot, time.Time, bool, objectorigin.ObjectOrigin) error); ok {
|
||||
r2 = rf(ctx, spaceID, sn, createdTime, getExisting, origin)
|
||||
} else {
|
||||
r2 = ret.Get(2).(string)
|
||||
r2 = ret.Error(2)
|
||||
}
|
||||
|
||||
if rf, ok := ret.Get(3).(func(context.Context, string, *common.Snapshot, time.Time, bool, objectorigin.ObjectOrigin) error); ok {
|
||||
r3 = rf(ctx, spaceID, sn, createdTime, getExisting, origin)
|
||||
} else {
|
||||
r3 = ret.Error(3)
|
||||
}
|
||||
|
||||
return r0, r1, r2, r3
|
||||
return r0, r1, r2
|
||||
}
|
||||
|
||||
// MockIDProvider_GetIDAndPayload_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetIDAndPayload'
|
||||
|
@ -94,12 +87,12 @@ func (_c *MockIDProvider_GetIDAndPayload_Call) Run(run func(ctx context.Context,
|
|||
return _c
|
||||
}
|
||||
|
||||
func (_c *MockIDProvider_GetIDAndPayload_Call) Return(_a0 string, _a1 treestorage.TreeStorageCreatePayload, _a2 string, _a3 error) *MockIDProvider_GetIDAndPayload_Call {
|
||||
_c.Call.Return(_a0, _a1, _a2, _a3)
|
||||
func (_c *MockIDProvider_GetIDAndPayload_Call) Return(_a0 string, _a1 treestorage.TreeStorageCreatePayload, _a2 error) *MockIDProvider_GetIDAndPayload_Call {
|
||||
_c.Call.Return(_a0, _a1, _a2)
|
||||
return _c
|
||||
}
|
||||
|
||||
func (_c *MockIDProvider_GetIDAndPayload_Call) RunAndReturn(run func(context.Context, string, *common.Snapshot, time.Time, bool, objectorigin.ObjectOrigin) (string, treestorage.TreeStorageCreatePayload, string, error)) *MockIDProvider_GetIDAndPayload_Call {
|
||||
func (_c *MockIDProvider_GetIDAndPayload_Call) RunAndReturn(run func(context.Context, string, *common.Snapshot, time.Time, bool, objectorigin.ObjectOrigin) (string, treestorage.TreeStorageCreatePayload, error)) *MockIDProvider_GetIDAndPayload_Call {
|
||||
_c.Call.Return(run)
|
||||
return _c
|
||||
}
|
||||
|
|
|
@ -28,7 +28,7 @@ type oldFile struct {
|
|||
fileObjectService fileobject.Service
|
||||
}
|
||||
|
||||
func (f *oldFile) GetIDAndPayload(ctx context.Context, spaceId string, sn *common.Snapshot, _ time.Time, _ bool, origin objectorigin.ObjectOrigin) (string, treestorage.TreeStorageCreatePayload, string, error) {
|
||||
func (f *oldFile) GetIDAndPayload(ctx context.Context, spaceId string, sn *common.Snapshot, _ time.Time, _ bool, origin objectorigin.ObjectOrigin) (string, treestorage.TreeStorageCreatePayload, error) {
|
||||
fileId := pbtypes.GetString(sn.Snapshot.Data.Details, bundle.RelationKeyId.String())
|
||||
filesKeys := map[string]string{}
|
||||
for _, fileKeys := range sn.Snapshot.FileKeys {
|
||||
|
@ -46,7 +46,7 @@ func (f *oldFile) GetIDAndPayload(ctx context.Context, spaceId string, sn *commo
|
|||
log.Error("handling old file object: upload file", zap.Error(err))
|
||||
}
|
||||
if err == nil {
|
||||
return fileObjectId, treestorage.TreeStorageCreatePayload{}, "", nil
|
||||
return fileObjectId, treestorage.TreeStorageCreatePayload{}, nil
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -55,13 +55,13 @@ func (f *oldFile) GetIDAndPayload(ctx context.Context, spaceId string, sn *commo
|
|||
EncryptionKeys: filesKeys,
|
||||
})
|
||||
if err != nil {
|
||||
return "", treestorage.TreeStorageCreatePayload{}, "", fmt.Errorf("add file keys: %w", err)
|
||||
return "", treestorage.TreeStorageCreatePayload{}, fmt.Errorf("add file keys: %w", err)
|
||||
}
|
||||
objectId, err := f.fileObjectService.CreateFromImport(domain.FullFileId{SpaceId: spaceId, FileId: domain.FileId(fileId)}, origin)
|
||||
if err != nil {
|
||||
return "", treestorage.TreeStorageCreatePayload{}, "", fmt.Errorf("create file object: %w", err)
|
||||
return "", treestorage.TreeStorageCreatePayload{}, fmt.Errorf("create file object: %w", err)
|
||||
}
|
||||
return objectId, treestorage.TreeStorageCreatePayload{}, "", nil
|
||||
return objectId, treestorage.TreeStorageCreatePayload{}, nil
|
||||
}
|
||||
|
||||
func uploadFile(ctx context.Context, blockService *block.Service, spaceId string, name string, filePath string, origin objectorigin.ObjectOrigin, encryptionKeys map[string]string) (string, error) {
|
||||
|
|
|
@ -20,10 +20,10 @@ func newParticipant() *participant {
|
|||
return &participant{}
|
||||
}
|
||||
|
||||
func (w *participant) GetIDAndPayload(ctx context.Context, spaceID string, sn *common.Snapshot, createdTime time.Time, getExisting bool, origin objectorigin.ObjectOrigin) (string, treestorage.TreeStorageCreatePayload, string, error) {
|
||||
func (w *participant) GetIDAndPayload(ctx context.Context, spaceID string, sn *common.Snapshot, _ time.Time, _ bool, _ objectorigin.ObjectOrigin) (string, treestorage.TreeStorageCreatePayload, error) {
|
||||
participantId := pbtypes.GetString(sn.Snapshot.Data.Details, bundle.RelationKeyId.String())
|
||||
splitId := strings.Split(participantId, "_")
|
||||
identity := splitId[len(splitId)-1]
|
||||
newParticipantID := domain.NewParticipantId(spaceID, identity)
|
||||
return newParticipantID, treestorage.TreeStorageCreatePayload{}, "", nil
|
||||
return newParticipantID, treestorage.TreeStorageCreatePayload{}, nil
|
||||
}
|
||||
|
|
|
@ -21,7 +21,11 @@ import (
|
|||
var log = logging.Logger("import").Desugar()
|
||||
|
||||
type IDProvider interface {
|
||||
GetIDAndPayload(ctx context.Context, spaceID string, sn *common.Snapshot, createdTime time.Time, getExisting bool, origin objectorigin.ObjectOrigin) (string, treestorage.TreeStorageCreatePayload, string, error)
|
||||
GetIDAndPayload(ctx context.Context, spaceID string, sn *common.Snapshot, createdTime time.Time, getExisting bool, origin objectorigin.ObjectOrigin) (string, treestorage.TreeStorageCreatePayload, error)
|
||||
}
|
||||
|
||||
type InternalKeyProvider interface {
|
||||
GetInternalKey(sbType sb.SmartBlockType) string
|
||||
}
|
||||
|
||||
type Provider struct {
|
||||
|
@ -64,9 +68,25 @@ func NewIDProvider(
|
|||
return p
|
||||
}
|
||||
|
||||
func (p *Provider) GetIDAndPayload(ctx context.Context, spaceID string, sn *common.Snapshot, createdTime time.Time, getExisting bool, origin objectorigin.ObjectOrigin) (string, treestorage.TreeStorageCreatePayload, string, error) {
|
||||
func (p *Provider) GetIDAndPayload(
|
||||
ctx context.Context,
|
||||
spaceID string,
|
||||
sn *common.Snapshot,
|
||||
createdTime time.Time,
|
||||
getExisting bool,
|
||||
origin objectorigin.ObjectOrigin,
|
||||
) (string, treestorage.TreeStorageCreatePayload, error) {
|
||||
if idProvider, ok := p.idProviderBySmartBlockType[sn.SbType]; ok {
|
||||
return idProvider.GetIDAndPayload(ctx, spaceID, sn, createdTime, getExisting, origin)
|
||||
}
|
||||
return "", treestorage.TreeStorageCreatePayload{}, "", fmt.Errorf("unsupported smartblock to import")
|
||||
return "", treestorage.TreeStorageCreatePayload{}, fmt.Errorf("unsupported smartblock to import")
|
||||
}
|
||||
|
||||
func (p *Provider) GetInternalKey(sbType sb.SmartBlockType) string {
|
||||
if idProvider, ok := p.idProviderBySmartBlockType[sbType]; ok {
|
||||
if internalKeyProvider, ok := idProvider.(InternalKeyProvider); ok {
|
||||
return internalKeyProvider.GetInternalKey(sbType)
|
||||
}
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
|
|
@ -22,24 +22,24 @@ func newTreeObject(existingObject *existingObject, spaceService space.Service) *
|
|||
return &treeObject{existingObject: existingObject, spaceService: spaceService}
|
||||
}
|
||||
|
||||
func (t *treeObject) GetIDAndPayload(ctx context.Context, spaceID string, sn *common.Snapshot, createdTime time.Time, getExisting bool, origin objectorigin.ObjectOrigin) (string, treestorage.TreeStorageCreatePayload, string, error) {
|
||||
func (t *treeObject) GetIDAndPayload(ctx context.Context, spaceID string, sn *common.Snapshot, _ time.Time, getExisting bool, _ objectorigin.ObjectOrigin) (string, treestorage.TreeStorageCreatePayload, error) {
|
||||
id, payload, err := t.existingObject.GetIDAndPayload(ctx, spaceID, sn, getExisting)
|
||||
if err != nil {
|
||||
return "", treestorage.TreeStorageCreatePayload{}, "", err
|
||||
return "", treestorage.TreeStorageCreatePayload{}, err
|
||||
}
|
||||
if id != "" {
|
||||
return id, payload, "", nil
|
||||
return id, payload, nil
|
||||
}
|
||||
spc, err := t.spaceService.Get(ctx, spaceID)
|
||||
if err != nil {
|
||||
return "", treestorage.TreeStorageCreatePayload{}, "", fmt.Errorf("get space : %w", err)
|
||||
return "", treestorage.TreeStorageCreatePayload{}, fmt.Errorf("get space : %w", err)
|
||||
}
|
||||
payload, err = spc.CreateTreePayload(ctx, payloadcreator.PayloadCreationParams{
|
||||
Time: time.Now(),
|
||||
SmartblockType: sn.SbType,
|
||||
})
|
||||
if err != nil {
|
||||
return "", treestorage.TreeStorageCreatePayload{}, "", fmt.Errorf("create tree payload: %w", err)
|
||||
return "", treestorage.TreeStorageCreatePayload{}, fmt.Errorf("create tree payload: %w", err)
|
||||
}
|
||||
return payload.RootRawChange.Id, payload, "", nil
|
||||
return payload.RootRawChange.Id, payload, nil
|
||||
}
|
||||
|
|
|
@ -20,10 +20,10 @@ func newWidget(spaceService space.Service) *widget {
|
|||
return &widget{spaceService: spaceService}
|
||||
}
|
||||
|
||||
func (w widget) GetIDAndPayload(ctx context.Context, spaceID string, sn *common.Snapshot, createdTime time.Time, getExisting bool, origin objectorigin.ObjectOrigin) (string, treestorage.TreeStorageCreatePayload, string, error) {
|
||||
func (w widget) GetIDAndPayload(ctx context.Context, spaceID string, _ *common.Snapshot, _ time.Time, _ bool, _ objectorigin.ObjectOrigin) (string, treestorage.TreeStorageCreatePayload, error) {
|
||||
spc, err := w.spaceService.Get(ctx, spaceID)
|
||||
if err != nil {
|
||||
return "", treestorage.TreeStorageCreatePayload{}, "", fmt.Errorf("get space : %w", err)
|
||||
return "", treestorage.TreeStorageCreatePayload{}, fmt.Errorf("get space : %w", err)
|
||||
}
|
||||
return spc.DerivedIDs().Widgets, treestorage.TreeStorageCreatePayload{}, "", nil
|
||||
return spc.DerivedIDs().Widgets, treestorage.TreeStorageCreatePayload{}, nil
|
||||
}
|
||||
|
|
|
@ -20,10 +20,10 @@ func newWorkspace(spaceService space.Service) *workspace {
|
|||
return &workspace{spaceService: spaceService}
|
||||
}
|
||||
|
||||
func (w *workspace) GetIDAndPayload(ctx context.Context, spaceID string, sn *common.Snapshot, createdTime time.Time, getExisting bool, origin objectorigin.ObjectOrigin) (string, treestorage.TreeStorageCreatePayload, string, error) {
|
||||
func (w *workspace) GetIDAndPayload(ctx context.Context, spaceID string, _ *common.Snapshot, _ time.Time, _ bool, _ objectorigin.ObjectOrigin) (string, treestorage.TreeStorageCreatePayload, error) {
|
||||
spc, err := w.spaceService.Get(ctx, spaceID)
|
||||
if err != nil {
|
||||
return "", treestorage.TreeStorageCreatePayload{}, "", fmt.Errorf("get space : %w", err)
|
||||
return "", treestorage.TreeStorageCreatePayload{}, fmt.Errorf("get space : %w", err)
|
||||
}
|
||||
return spc.DerivedIDs().Workspace, treestorage.TreeStorageCreatePayload{}, "", nil
|
||||
return spc.DerivedIDs().Workspace, treestorage.TreeStorageCreatePayload{}, nil
|
||||
}
|
||||
|
|
|
@ -423,7 +423,7 @@ func (i *Import) getObjectID(
|
|||
id string
|
||||
payload treestorage.TreeStorageCreatePayload
|
||||
)
|
||||
id, payload, newUniqueKey, err := i.idProvider.GetIDAndPayload(ctx, spaceID, snapshot, time.Now(), updateExisting, origin)
|
||||
id, payload, err := i.idProvider.GetIDAndPayload(ctx, spaceID, snapshot, time.Now(), updateExisting, origin)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -431,6 +431,15 @@ func (i *Import) getObjectID(
|
|||
if payload.RootRawChange != nil {
|
||||
createPayloads[id] = payload
|
||||
}
|
||||
return i.extractInternalKey(snapshot, oldIDToNew)
|
||||
}
|
||||
|
||||
func (i *Import) extractInternalKey(snapshot *common.Snapshot, oldIDToNew map[string]string) error {
|
||||
internalKeyProvider, ok := i.idProvider.(objectid.InternalKeyProvider)
|
||||
if !ok {
|
||||
return nil
|
||||
}
|
||||
newUniqueKey := internalKeyProvider.GetInternalKey(snapshot.SbType)
|
||||
if newUniqueKey != "" {
|
||||
oldUniqueKey := pbtypes.GetString(snapshot.Snapshot.Data.Details, bundle.RelationKeyUniqueKey.String())
|
||||
if oldUniqueKey == "" {
|
||||
|
|
|
@ -57,7 +57,7 @@ func Test_ImportSuccess(t *testing.T) {
|
|||
i.oc = creator
|
||||
|
||||
idGetter := mock_objectid.NewMockIDProvider(t)
|
||||
idGetter.EXPECT().GetIDAndPayload(mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return("id", treestorage.TreeStorageCreatePayload{}, "", nil).Times(1)
|
||||
idGetter.EXPECT().GetIDAndPayload(mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return("id", treestorage.TreeStorageCreatePayload{}, nil).Times(1)
|
||||
i.idProvider = idGetter
|
||||
|
||||
fileSync := mock_filesync.NewMockFileSync(t)
|
||||
|
@ -136,7 +136,7 @@ func Test_ImportErrorFromObjectCreator(t *testing.T) {
|
|||
creator.EXPECT().Create(mock.Anything, mock.Anything).Return(nil, "", errors.New("creator error")).Times(1)
|
||||
i.oc = creator
|
||||
idGetter := mock_objectid.NewMockIDProvider(t)
|
||||
idGetter.EXPECT().GetIDAndPayload(mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return("id", treestorage.TreeStorageCreatePayload{}, "", nil).Times(1)
|
||||
idGetter.EXPECT().GetIDAndPayload(mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return("id", treestorage.TreeStorageCreatePayload{}, nil).Times(1)
|
||||
i.idProvider = idGetter
|
||||
|
||||
fileSync := mock_filesync.NewMockFileSync(t)
|
||||
|
@ -184,7 +184,7 @@ func Test_ImportIgnoreErrorMode(t *testing.T) {
|
|||
creator.EXPECT().Create(mock.Anything, mock.Anything).Return(nil, "", nil).Times(1)
|
||||
i.oc = creator
|
||||
idGetter := mock_objectid.NewMockIDProvider(t)
|
||||
idGetter.EXPECT().GetIDAndPayload(mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return("id", treestorage.TreeStorageCreatePayload{}, "", nil).Times(1)
|
||||
idGetter.EXPECT().GetIDAndPayload(mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return("id", treestorage.TreeStorageCreatePayload{}, nil).Times(1)
|
||||
i.idProvider = idGetter
|
||||
|
||||
fileSync := mock_filesync.NewMockFileSync(t)
|
||||
|
@ -234,7 +234,7 @@ func Test_ImportIgnoreErrorModeWithTwoErrorsPerFile(t *testing.T) {
|
|||
creator.EXPECT().Create(mock.Anything, mock.Anything).Return(nil, "", errors.New("creator error")).Times(1)
|
||||
i.oc = creator
|
||||
idGetter := mock_objectid.NewMockIDProvider(t)
|
||||
idGetter.EXPECT().GetIDAndPayload(mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return("id", treestorage.TreeStorageCreatePayload{}, "", nil).Times(1)
|
||||
idGetter.EXPECT().GetIDAndPayload(mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return("id", treestorage.TreeStorageCreatePayload{}, nil).Times(1)
|
||||
i.idProvider = idGetter
|
||||
|
||||
fileSync := mock_filesync.NewMockFileSync(t)
|
||||
|
@ -262,7 +262,7 @@ func Test_ImportExternalPlugin(t *testing.T) {
|
|||
creator.EXPECT().Create(mock.Anything, mock.Anything).Return(nil, "", nil).Times(1)
|
||||
i.oc = creator
|
||||
idGetter := mock_objectid.NewMockIDProvider(t)
|
||||
idGetter.EXPECT().GetIDAndPayload(mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return("id", treestorage.TreeStorageCreatePayload{}, "", nil).Times(1)
|
||||
idGetter.EXPECT().GetIDAndPayload(mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return("id", treestorage.TreeStorageCreatePayload{}, nil).Times(1)
|
||||
i.idProvider = idGetter
|
||||
|
||||
fileSync := mock_filesync.NewMockFileSync(t)
|
||||
|
@ -404,7 +404,7 @@ func Test_ImportWebSuccess(t *testing.T) {
|
|||
creator.EXPECT().Create(mock.Anything, mock.Anything).Return(nil, "", nil).Times(1)
|
||||
i.oc = creator
|
||||
idGetter := mock_objectid.NewMockIDProvider(t)
|
||||
idGetter.EXPECT().GetIDAndPayload(mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return("id", treestorage.TreeStorageCreatePayload{}, "", nil).Times(1)
|
||||
idGetter.EXPECT().GetIDAndPayload(mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return("id", treestorage.TreeStorageCreatePayload{}, nil).Times(1)
|
||||
i.idProvider = idGetter
|
||||
parser := parsers.NewMockParser(ctrl)
|
||||
parser.EXPECT().MatchUrl("http://example.com").Return(true).Times(1)
|
||||
|
@ -445,7 +445,7 @@ func Test_ImportWebFailedToCreateObject(t *testing.T) {
|
|||
creator.EXPECT().Create(mock.Anything, mock.Anything).Return(nil, "", errors.New("error")).Times(1)
|
||||
i.oc = creator
|
||||
idGetter := mock_objectid.NewMockIDProvider(t)
|
||||
idGetter.EXPECT().GetIDAndPayload(mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return("id", treestorage.TreeStorageCreatePayload{}, "", nil).Times(1)
|
||||
idGetter.EXPECT().GetIDAndPayload(mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return("id", treestorage.TreeStorageCreatePayload{}, nil).Times(1)
|
||||
i.idProvider = idGetter
|
||||
parser := parsers.NewMockParser(ctrl)
|
||||
parser.EXPECT().MatchUrl("http://example.com").Return(true).Times(1)
|
||||
|
@ -588,7 +588,7 @@ func Test_ImportNoObjectToImportErrorIgnoreErrorsMode(t *testing.T) {
|
|||
creator.EXPECT().Create(mock.Anything, mock.Anything).Return(nil, "", nil).Times(1)
|
||||
i.oc = creator
|
||||
idGetter := mock_objectid.NewMockIDProvider(t)
|
||||
idGetter.EXPECT().GetIDAndPayload(mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return("id", treestorage.TreeStorageCreatePayload{}, "", nil).Times(1)
|
||||
idGetter.EXPECT().GetIDAndPayload(mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return("id", treestorage.TreeStorageCreatePayload{}, nil).Times(1)
|
||||
i.idProvider = idGetter
|
||||
|
||||
fileSync := mock_filesync.NewMockFileSync(t)
|
||||
|
@ -780,7 +780,7 @@ func Test_ImportRootCollectionInResponse(t *testing.T) {
|
|||
i.oc = creator
|
||||
|
||||
idGetter := mock_objectid.NewMockIDProvider(t)
|
||||
idGetter.EXPECT().GetIDAndPayload(mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(expectedRootCollectionID, treestorage.TreeStorageCreatePayload{}, "", nil).Times(1)
|
||||
idGetter.EXPECT().GetIDAndPayload(mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(expectedRootCollectionID, treestorage.TreeStorageCreatePayload{}, nil).Times(1)
|
||||
i.idProvider = idGetter
|
||||
|
||||
fileSync := mock_filesync.NewMockFileSync(t)
|
||||
|
@ -828,7 +828,7 @@ func Test_ImportRootCollectionInResponse(t *testing.T) {
|
|||
i.oc = creator
|
||||
|
||||
idGetter := mock_objectid.NewMockIDProvider(t)
|
||||
idGetter.EXPECT().GetIDAndPayload(mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return("id", treestorage.TreeStorageCreatePayload{}, "", nil).Times(1)
|
||||
idGetter.EXPECT().GetIDAndPayload(mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return("id", treestorage.TreeStorageCreatePayload{}, nil).Times(1)
|
||||
i.idProvider = idGetter
|
||||
|
||||
fileSync := mock_filesync.NewMockFileSync(t)
|
||||
|
@ -912,7 +912,7 @@ func Test_ImportRootCollectionInResponse(t *testing.T) {
|
|||
i.oc = creator
|
||||
|
||||
idGetter := mock_objectid.NewMockIDProvider(t)
|
||||
idGetter.EXPECT().GetIDAndPayload(mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return("id", treestorage.TreeStorageCreatePayload{}, "", nil).Times(1)
|
||||
idGetter.EXPECT().GetIDAndPayload(mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return("id", treestorage.TreeStorageCreatePayload{}, nil).Times(1)
|
||||
i.idProvider = idGetter
|
||||
|
||||
fileSync := mock_filesync.NewMockFileSync(t)
|
||||
|
@ -947,7 +947,7 @@ func Test_getObjectId(t *testing.T) {
|
|||
},
|
||||
}
|
||||
idGetter := mock_objectid.NewMockIDProvider(t)
|
||||
idGetter.EXPECT().GetIDAndPayload(context.Background(), "spaceId", sn, mock.Anything, false, objectorigin.Import(model.Import_Pb)).Return("newId", treestorage.TreeStorageCreatePayload{}, "", nil).Times(1)
|
||||
idGetter.EXPECT().GetIDAndPayload(context.Background(), "spaceId", sn, mock.Anything, false, objectorigin.Import(model.Import_Pb)).Return("newId", treestorage.TreeStorageCreatePayload{}, nil).Times(1)
|
||||
i.idProvider = idGetter
|
||||
|
||||
// when
|
||||
|
@ -971,7 +971,7 @@ func Test_getObjectId(t *testing.T) {
|
|||
},
|
||||
}
|
||||
idGetter := mock_objectid.NewMockIDProvider(t)
|
||||
idGetter.EXPECT().GetIDAndPayload(context.Background(), "spaceId", sn, mock.Anything, false, objectorigin.Import(model.Import_Pb)).Return("newId", treestorage.TreeStorageCreatePayload{}, "newKey", nil).Times(1)
|
||||
idGetter.EXPECT().GetIDAndPayload(context.Background(), "spaceId", sn, mock.Anything, false, objectorigin.Import(model.Import_Pb)).Return("newId", treestorage.TreeStorageCreatePayload{}, nil).Times(1)
|
||||
i.idProvider = idGetter
|
||||
|
||||
// when
|
||||
|
@ -998,7 +998,7 @@ func Test_getObjectId(t *testing.T) {
|
|||
},
|
||||
}
|
||||
idGetter := mock_objectid.NewMockIDProvider(t)
|
||||
idGetter.EXPECT().GetIDAndPayload(context.Background(), "spaceId", sn, mock.Anything, false, objectorigin.Import(model.Import_Pb)).Return("newId", treestorage.TreeStorageCreatePayload{}, "newKey", nil).Times(1)
|
||||
idGetter.EXPECT().GetIDAndPayload(context.Background(), "spaceId", sn, mock.Anything, false, objectorigin.Import(model.Import_Pb)).Return("newId", treestorage.TreeStorageCreatePayload{}, nil).Times(1)
|
||||
i.idProvider = idGetter
|
||||
|
||||
// when
|
||||
|
@ -1027,7 +1027,7 @@ func Test_getObjectId(t *testing.T) {
|
|||
idGetter := mock_objectid.NewMockIDProvider(t)
|
||||
idGetter.EXPECT().GetIDAndPayload(context.Background(), "spaceId", sn, mock.Anything, false, objectorigin.Import(model.Import_Pb)).Return("newId", treestorage.TreeStorageCreatePayload{
|
||||
RootRawChange: &treechangeproto.RawTreeChangeWithId{},
|
||||
}, "newKey", nil).Times(1)
|
||||
}, nil).Times(1)
|
||||
i.idProvider = idGetter
|
||||
|
||||
// when
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue