Send head notify message on object create
This commit is contained in:
parent
56f35c1a73
commit
86359af3be
@ -225,13 +225,14 @@ func (s *space) DeriveTree(ctx context.Context, payload tree.ObjectTreeCreatePay
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
deps := synctree.CreateDeps{
|
deps := synctree.CreateDeps{
|
||||||
SpaceId: s.id,
|
SpaceId: s.id,
|
||||||
Payload: payload,
|
Payload: payload,
|
||||||
SyncService: s.syncService,
|
SyncService: s.syncService,
|
||||||
Configuration: s.configuration,
|
Configuration: s.configuration,
|
||||||
AclList: s.aclList,
|
AclList: s.aclList,
|
||||||
SpaceStorage: s.storage,
|
SpaceStorage: s.storage,
|
||||||
StatusService: s.statusService,
|
StatusService: s.statusService,
|
||||||
|
HeadNotifiable: s.diffService,
|
||||||
}
|
}
|
||||||
return synctree.DeriveSyncTree(ctx, deps)
|
return synctree.DeriveSyncTree(ctx, deps)
|
||||||
}
|
}
|
||||||
@ -242,13 +243,14 @@ func (s *space) CreateTree(ctx context.Context, payload tree.ObjectTreeCreatePay
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
deps := synctree.CreateDeps{
|
deps := synctree.CreateDeps{
|
||||||
SpaceId: s.id,
|
SpaceId: s.id,
|
||||||
Payload: payload,
|
Payload: payload,
|
||||||
SyncService: s.syncService,
|
SyncService: s.syncService,
|
||||||
Configuration: s.configuration,
|
Configuration: s.configuration,
|
||||||
AclList: s.aclList,
|
AclList: s.aclList,
|
||||||
SpaceStorage: s.storage,
|
SpaceStorage: s.storage,
|
||||||
StatusService: s.statusService,
|
StatusService: s.statusService,
|
||||||
|
HeadNotifiable: s.diffService,
|
||||||
}
|
}
|
||||||
return synctree.CreateSyncTree(ctx, deps)
|
return synctree.CreateSyncTree(ctx, deps)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
// Code generated by MockGen. DO NOT EDIT.
|
// Code generated by MockGen. DO NOT EDIT.
|
||||||
// Source: github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/synctree (interfaces: SyncClient,SyncTree,ReceiveQueue)
|
// Source: github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/synctree (interfaces: SyncClient,SyncTree,ReceiveQueue,HeadNotifiable)
|
||||||
|
|
||||||
// Package mock_synctree is a generated GoMock package.
|
// Package mock_synctree is a generated GoMock package.
|
||||||
package mock_synctree
|
package mock_synctree
|
||||||
@ -519,3 +519,38 @@ func (mr *MockReceiveQueueMockRecorder) GetMessage(arg0 interface{}) *gomock.Cal
|
|||||||
mr.mock.ctrl.T.Helper()
|
mr.mock.ctrl.T.Helper()
|
||||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetMessage", reflect.TypeOf((*MockReceiveQueue)(nil).GetMessage), arg0)
|
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetMessage", reflect.TypeOf((*MockReceiveQueue)(nil).GetMessage), arg0)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// MockHeadNotifiable is a mock of HeadNotifiable interface.
|
||||||
|
type MockHeadNotifiable struct {
|
||||||
|
ctrl *gomock.Controller
|
||||||
|
recorder *MockHeadNotifiableMockRecorder
|
||||||
|
}
|
||||||
|
|
||||||
|
// MockHeadNotifiableMockRecorder is the mock recorder for MockHeadNotifiable.
|
||||||
|
type MockHeadNotifiableMockRecorder struct {
|
||||||
|
mock *MockHeadNotifiable
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewMockHeadNotifiable creates a new mock instance.
|
||||||
|
func NewMockHeadNotifiable(ctrl *gomock.Controller) *MockHeadNotifiable {
|
||||||
|
mock := &MockHeadNotifiable{ctrl: ctrl}
|
||||||
|
mock.recorder = &MockHeadNotifiableMockRecorder{mock}
|
||||||
|
return mock
|
||||||
|
}
|
||||||
|
|
||||||
|
// EXPECT returns an object that allows the caller to indicate expected use.
|
||||||
|
func (m *MockHeadNotifiable) EXPECT() *MockHeadNotifiableMockRecorder {
|
||||||
|
return m.recorder
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateHeads mocks base method.
|
||||||
|
func (m *MockHeadNotifiable) UpdateHeads(arg0 string, arg1 []string) {
|
||||||
|
m.ctrl.T.Helper()
|
||||||
|
m.ctrl.Call(m, "UpdateHeads", arg0, arg1)
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateHeads indicates an expected call of UpdateHeads.
|
||||||
|
func (mr *MockHeadNotifiableMockRecorder) UpdateHeads(arg0, arg1 interface{}) *gomock.Call {
|
||||||
|
mr.mock.ctrl.T.Helper()
|
||||||
|
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateHeads", reflect.TypeOf((*MockHeadNotifiable)(nil).UpdateHeads), arg0, arg1)
|
||||||
|
}
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
//go:generate mockgen -destination mock_synctree/mock_synctree.go github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/synctree SyncClient,SyncTree,ReceiveQueue
|
//go:generate mockgen -destination mock_synctree/mock_synctree.go github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/synctree SyncClient,SyncTree,ReceiveQueue,HeadNotifiable
|
||||||
package synctree
|
package synctree
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
|||||||
@ -57,13 +57,14 @@ var buildObjectTree = tree.BuildObjectTree
|
|||||||
var createSyncClient = newWrappedSyncClient
|
var createSyncClient = newWrappedSyncClient
|
||||||
|
|
||||||
type CreateDeps struct {
|
type CreateDeps struct {
|
||||||
SpaceId string
|
SpaceId string
|
||||||
Payload tree.ObjectTreeCreatePayload
|
Payload tree.ObjectTreeCreatePayload
|
||||||
Configuration nodeconf.Configuration
|
Configuration nodeconf.Configuration
|
||||||
SyncService syncservice.SyncService
|
SyncService syncservice.SyncService
|
||||||
AclList list.ACLList
|
AclList list.ACLList
|
||||||
SpaceStorage spacestorage.SpaceStorage
|
SpaceStorage spacestorage.SpaceStorage
|
||||||
StatusService statusservice.StatusService
|
StatusService statusservice.StatusService
|
||||||
|
HeadNotifiable HeadNotifiable
|
||||||
}
|
}
|
||||||
|
|
||||||
type BuildDeps struct {
|
type BuildDeps struct {
|
||||||
@ -101,8 +102,11 @@ func DeriveSyncTree(ctx context.Context, deps CreateDeps) (id string, err error)
|
|||||||
deps.Configuration)
|
deps.Configuration)
|
||||||
|
|
||||||
id = objTree.ID()
|
id = objTree.ID()
|
||||||
|
heads := objTree.Heads()
|
||||||
|
|
||||||
|
deps.HeadNotifiable.UpdateHeads(id, heads)
|
||||||
headUpdate := syncClient.CreateHeadUpdate(objTree, nil)
|
headUpdate := syncClient.CreateHeadUpdate(objTree, nil)
|
||||||
deps.StatusService.HeadsChange(id, objTree.Heads())
|
deps.StatusService.HeadsChange(id, heads)
|
||||||
syncClient.BroadcastAsync(headUpdate)
|
syncClient.BroadcastAsync(headUpdate)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -119,8 +123,11 @@ func CreateSyncTree(ctx context.Context, deps CreateDeps) (id string, err error)
|
|||||||
deps.Configuration)
|
deps.Configuration)
|
||||||
|
|
||||||
id = objTree.ID()
|
id = objTree.ID()
|
||||||
|
heads := objTree.Heads()
|
||||||
|
|
||||||
|
deps.HeadNotifiable.UpdateHeads(id, heads)
|
||||||
headUpdate := syncClient.CreateHeadUpdate(objTree, nil)
|
headUpdate := syncClient.CreateHeadUpdate(objTree, nil)
|
||||||
deps.StatusService.HeadsChange(id, objTree.Heads())
|
deps.StatusService.HeadsChange(id, heads)
|
||||||
syncClient.BroadcastAsync(headUpdate)
|
syncClient.BroadcastAsync(headUpdate)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
@ -53,6 +53,7 @@ func Test_DeriveSyncTree(t *testing.T) {
|
|||||||
aclListMock := mock_list.NewMockACLList(ctrl)
|
aclListMock := mock_list.NewMockACLList(ctrl)
|
||||||
objTreeMock := newTestObjMock(mock_tree.NewMockObjectTree(ctrl))
|
objTreeMock := newTestObjMock(mock_tree.NewMockObjectTree(ctrl))
|
||||||
spaceStorageMock := mock_storage.NewMockSpaceStorage(ctrl)
|
spaceStorageMock := mock_storage.NewMockSpaceStorage(ctrl)
|
||||||
|
headNotifiableMock := mock_synctree.NewMockHeadNotifiable(ctrl)
|
||||||
spaceId := "spaceId"
|
spaceId := "spaceId"
|
||||||
expectedPayload := tree.ObjectTreeCreatePayload{SpaceId: spaceId}
|
expectedPayload := tree.ObjectTreeCreatePayload{SpaceId: spaceId}
|
||||||
createDerivedObjectTree = func(payload tree.ObjectTreeCreatePayload, l list.ACLList, create storage2.TreeStorageCreatorFunc) (objTree tree.ObjectTree, err error) {
|
createDerivedObjectTree = func(payload tree.ObjectTreeCreatePayload, l list.ACLList, create storage2.TreeStorageCreatorFunc) (objTree tree.ObjectTree, err error) {
|
||||||
@ -63,14 +64,16 @@ func Test_DeriveSyncTree(t *testing.T) {
|
|||||||
createSyncClient = syncClientFuncCreator(syncClientMock)
|
createSyncClient = syncClientFuncCreator(syncClientMock)
|
||||||
headUpdate := &treechangeproto.TreeSyncMessage{}
|
headUpdate := &treechangeproto.TreeSyncMessage{}
|
||||||
objTreeMock.EXPECT().Heads().AnyTimes().Return([]string{"h1"})
|
objTreeMock.EXPECT().Heads().AnyTimes().Return([]string{"h1"})
|
||||||
|
headNotifiableMock.EXPECT().UpdateHeads("id", []string{"h1"})
|
||||||
syncClientMock.EXPECT().CreateHeadUpdate(gomock.Any(), gomock.Nil()).Return(headUpdate)
|
syncClientMock.EXPECT().CreateHeadUpdate(gomock.Any(), gomock.Nil()).Return(headUpdate)
|
||||||
syncClientMock.EXPECT().BroadcastAsync(gomock.Eq(headUpdate)).Return(nil)
|
syncClientMock.EXPECT().BroadcastAsync(gomock.Eq(headUpdate)).Return(nil)
|
||||||
deps := CreateDeps{
|
deps := CreateDeps{
|
||||||
AclList: aclListMock,
|
AclList: aclListMock,
|
||||||
SpaceId: spaceId,
|
SpaceId: spaceId,
|
||||||
Payload: expectedPayload,
|
Payload: expectedPayload,
|
||||||
SpaceStorage: spaceStorageMock,
|
SpaceStorage: spaceStorageMock,
|
||||||
StatusService: statusservice.NewNoOpStatusService(),
|
StatusService: statusservice.NewNoOpStatusService(),
|
||||||
|
HeadNotifiable: headNotifiableMock,
|
||||||
}
|
}
|
||||||
objTreeMock.EXPECT().ID().Return("id")
|
objTreeMock.EXPECT().ID().Return("id")
|
||||||
|
|
||||||
@ -87,6 +90,7 @@ func Test_CreateSyncTree(t *testing.T) {
|
|||||||
aclListMock := mock_list.NewMockACLList(ctrl)
|
aclListMock := mock_list.NewMockACLList(ctrl)
|
||||||
objTreeMock := newTestObjMock(mock_tree.NewMockObjectTree(ctrl))
|
objTreeMock := newTestObjMock(mock_tree.NewMockObjectTree(ctrl))
|
||||||
spaceStorageMock := mock_storage.NewMockSpaceStorage(ctrl)
|
spaceStorageMock := mock_storage.NewMockSpaceStorage(ctrl)
|
||||||
|
headNotifiableMock := mock_synctree.NewMockHeadNotifiable(ctrl)
|
||||||
spaceId := "spaceId"
|
spaceId := "spaceId"
|
||||||
expectedPayload := tree.ObjectTreeCreatePayload{SpaceId: spaceId}
|
expectedPayload := tree.ObjectTreeCreatePayload{SpaceId: spaceId}
|
||||||
createObjectTree = func(payload tree.ObjectTreeCreatePayload, l list.ACLList, create storage2.TreeStorageCreatorFunc) (objTree tree.ObjectTree, err error) {
|
createObjectTree = func(payload tree.ObjectTreeCreatePayload, l list.ACLList, create storage2.TreeStorageCreatorFunc) (objTree tree.ObjectTree, err error) {
|
||||||
@ -98,15 +102,17 @@ func Test_CreateSyncTree(t *testing.T) {
|
|||||||
createSyncClient = syncClientFuncCreator(syncClientMock)
|
createSyncClient = syncClientFuncCreator(syncClientMock)
|
||||||
objTreeMock.EXPECT().Heads().AnyTimes().Return([]string{"h1"})
|
objTreeMock.EXPECT().Heads().AnyTimes().Return([]string{"h1"})
|
||||||
headUpdate := &treechangeproto.TreeSyncMessage{}
|
headUpdate := &treechangeproto.TreeSyncMessage{}
|
||||||
|
headNotifiableMock.EXPECT().UpdateHeads("id", []string{"h1"})
|
||||||
syncClientMock.EXPECT().CreateHeadUpdate(gomock.Any(), gomock.Nil()).Return(headUpdate)
|
syncClientMock.EXPECT().CreateHeadUpdate(gomock.Any(), gomock.Nil()).Return(headUpdate)
|
||||||
syncClientMock.EXPECT().BroadcastAsync(gomock.Eq(headUpdate)).Return(nil)
|
syncClientMock.EXPECT().BroadcastAsync(gomock.Eq(headUpdate)).Return(nil)
|
||||||
objTreeMock.EXPECT().ID().Return("id")
|
objTreeMock.EXPECT().ID().Return("id")
|
||||||
deps := CreateDeps{
|
deps := CreateDeps{
|
||||||
AclList: aclListMock,
|
AclList: aclListMock,
|
||||||
SpaceId: spaceId,
|
SpaceId: spaceId,
|
||||||
Payload: expectedPayload,
|
Payload: expectedPayload,
|
||||||
SpaceStorage: spaceStorageMock,
|
SpaceStorage: spaceStorageMock,
|
||||||
StatusService: statusservice.NewNoOpStatusService(),
|
StatusService: statusservice.NewNoOpStatusService(),
|
||||||
|
HeadNotifiable: headNotifiableMock,
|
||||||
}
|
}
|
||||||
|
|
||||||
_, err := CreateSyncTree(ctx, deps)
|
_, err := CreateSyncTree(ctx, deps)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user