diff --git a/core/account.go b/core/account.go index 64c1e46e4..edbc77a64 100644 --- a/core/account.go +++ b/core/account.go @@ -473,7 +473,7 @@ func (mw *Middleware) AccountSelect(req *pb.RpcAccountSelectRequest) *pb.RpcAcco return response(nil, pb.RpcAccountSelectResponseError_FAILED_TO_RUN_NODE, err) } - } else if req.Id == mw.app.MustComponent(core.CName).(core.Service).Account(){ + } else if req.Id == mw.app.MustComponent(core.CName).(core.Service).Account() { // in order to stop send events we need to close all opened blocks in case client still has them mw.app.MustComponent("blockService").(block.Service).CloseBlocks() } diff --git a/core/block/editor/file/file_test.go b/core/block/editor/file/file_test.go index dc83ca01d..96cbea919 100644 --- a/core/block/editor/file/file_test.go +++ b/core/block/editor/file/file_test.go @@ -1 +1 @@ -package file_test \ No newline at end of file +package file_test diff --git a/core/block/editor/smartblock/smartblock.go b/core/block/editor/smartblock/smartblock.go index 05d1d4c24..ff891e429 100644 --- a/core/block/editor/smartblock/smartblock.go +++ b/core/block/editor/smartblock/smartblock.go @@ -116,14 +116,14 @@ type linkSource interface { type smartBlock struct { state.Doc sync.Mutex - depIds []string - sendEvent func(e *pb.Event) - undo undo.History - source source.Source - meta meta.Service - metaSub meta.Subscriber - metaData *core.SmartBlockMeta - lastDepDetails map[string]*pb.EventObjectDetailsSet + depIds []string + sendEvent func(e *pb.Event) + undo undo.History + source source.Source + meta meta.Service + metaSub meta.Subscriber + metaData *core.SmartBlockMeta + lastDepDetails map[string]*pb.EventObjectDetailsSet disableLayouts bool onNewStateHooks []func() @@ -467,7 +467,6 @@ func (sb *smartBlock) Apply(s *state.State, flags ...ApplyFlag) (err error) { checkRestrictions = false } } - log.Debugf("sb.Apply() %s readonly %v, addHistory %v", sb.Id(), sb.source.ReadOnly(), addHistory) if sb.source.ReadOnly() && addHistory { // workaround to detect user-generated action return fmt.Errorf("object is readonly") @@ -482,7 +481,9 @@ func (sb *smartBlock) Apply(s *state.State, flags ...ApplyFlag) (err error) { log.With("thread", sb.Id()).Errorf("injectCreationInfo failed: %s", err.Error()) } // inject lastModifiedDate - s.SetLastModified(time.Now().Unix(), sb.Anytype().Account()) + if sb.Anytype() != nil { + s.SetLastModified(time.Now().Unix(), sb.Anytype().Account()) + } msgs, act, err := state.ApplyState(s, !sb.disableLayouts) if err != nil { return diff --git a/core/block/editor/smartblock/smartblock_test.go b/core/block/editor/smartblock/smartblock_test.go index 687699a6b..42e8cacb4 100644 --- a/core/block/editor/smartblock/smartblock_test.go +++ b/core/block/editor/smartblock/smartblock_test.go @@ -71,7 +71,7 @@ func TestSmartBlock_Show(t *testing.T) { msgs := ctx.GetMessages() require.Len(t, msgs, 1) - msg := msgs[0].GetBlockShow() + msg := msgs[0].GetObjectShow() require.NotNil(t, msg) assert.Len(t, msg.Blocks, 3) assert.Equal(t, "1", msg.RootId) @@ -86,6 +86,7 @@ func TestSmartBlock_Apply(t *testing.T) { s := fx.NewState() s.Add(simple.New(&model.Block{Id: "2"})) require.NoError(t, s.InsertTo("1", model.Block_Inner, "2")) + fx.source.EXPECT().ReadOnly() fx.source.EXPECT().PushChange(gomock.Any()) var event *pb.Event fx.SetEventFunc(func(e *pb.Event) { diff --git a/core/block/editor/state/normalize_test.go b/core/block/editor/state/normalize_test.go index a46e2e0ca..ad2951004 100644 --- a/core/block/editor/state/normalize_test.go +++ b/core/block/editor/state/normalize_test.go @@ -335,7 +335,7 @@ func TestState_Normalize(t *testing.T) { t.Run("split with numeric #349", func(t *testing.T) { data, err := ioutil.ReadFile("./testdata/349_blocks.pb") require.NoError(t, err) - var ev = &pb.EventBlockShow{} + var ev = &pb.EventObjectShow{} require.NoError(t, ev.Unmarshal(data)) r := NewDoc(ev.RootId, nil).(*State) @@ -509,7 +509,7 @@ func TestCleanupLayouts(t *testing.T) { func BenchmarkNormalize(b *testing.B) { data, err := ioutil.ReadFile("./testdata/349_blocks.pb") require.NoError(b, err) - var ev = &pb.EventBlockShow{} + var ev = &pb.EventObjectShow{} require.NoError(b, ev.Unmarshal(data)) r := NewDoc(ev.RootId, nil).(*State) diff --git a/core/block/service.go b/core/block/service.go index c4afcd5bb..3fe561ad0 100644 --- a/core/block/service.go +++ b/core/block/service.go @@ -354,7 +354,7 @@ func (s *service) CloseBlocks() { s.m.Lock() defer s.m.Unlock() - for _, ob := range s.openedBlocks{ + for _, ob := range s.openedBlocks { ob.Lock() ob.locked = true ob.BlockClose() diff --git a/core/block/source/source.go b/core/block/source/source.go index bee6005bc..10ecd82aa 100644 --- a/core/block/source/source.go +++ b/core/block/source/source.go @@ -284,6 +284,7 @@ func InjectLocalDetails(s Source, st *state.State) { } } } + type PushChangeParams struct { State *state.State Changes []*pb.ChangeContent @@ -322,7 +323,7 @@ func (s *source) PushChange(params PushChangeParams) (id string, err error) { s.logHeads[s.logId] = ch if c.Snapshot != nil { s.lastSnapshotId = id - log.Infof("%s: pushed snapshot", s.id) + log.Errorf("%s: pushed snapshot", s.id) } else { log.Debugf("%s: pushed %d changes", s.id, len(ch.Content)) } diff --git a/core/converter/md/md.go b/core/converter/md/md.go index facdcc639..ddfa92b62 100644 --- a/core/converter/md/md.go +++ b/core/converter/md/md.go @@ -265,7 +265,7 @@ type marksWriter struct { starts []*model.BlockContentTextMark ends []*model.BlockContentTextMark } - open []*model.BlockContentTextMark + open []*model.BlockContentTextMark } func (mw *marksWriter) writeMarks(pos int) { diff --git a/core/files_test.go b/core/files_test.go index 3d3d55f2b..a1ec32653 100644 --- a/core/files_test.go +++ b/core/files_test.go @@ -17,14 +17,14 @@ func TestFile(t *testing.T) { respOpenImage := mw.BlockOpen(&pb.RpcBlockOpenRequest{BlockId: respUploadImage.Hash}) require.Equal(t, 0, int(respOpenImage.Error.Code), respOpenImage.Error.Description) require.Len(t, respOpenImage.Event.Messages, 1) - show := getEventBlockShow(respOpenImage.Event.Messages) + show := getEventObjectShow(respOpenImage.Event.Messages) require.NotNil(t, show) require.GreaterOrEqual(t, len(show.Details), 2) det := getDetailsForContext(show.Details, respUploadImage.Hash) require.Equal(t, "a", pbtypes.GetString(det, "name")) require.Equal(t, "image/jpeg", pbtypes.GetString(det, "fileMimeType")) - b := getBlockById("file", respOpenImage.Event.Messages[0].GetBlockShow().Blocks) + b := getBlockById("file", respOpenImage.Event.Messages[0].GetObjectShow().Blocks) require.NotNil(t, b) require.Equal(t, respUploadImage.Hash, b.GetFile().Hash) }) diff --git a/core/relations_test.go b/core/relations_test.go index 618d71c0b..eb670b245 100644 --- a/core/relations_test.go +++ b/core/relations_test.go @@ -85,7 +85,7 @@ func TestRelationAdd(t *testing.T) { respOpenNewPage := mw.BlockOpen(&pb.RpcBlockOpenRequest{BlockId: mw.GetAnytype().PredefinedBlocks().SetPages}) require.Equal(t, 0, int(respOpenNewPage.Error.Code), respOpenNewPage.Error.Description) require.Len(t, respOpenNewPage.Event.Messages, 2) - block := getBlockById("dataview", getEventBlockShow(respOpenNewPage.Event.Messages).Blocks) + block := getBlockById("dataview", getEventObjectShow(respOpenNewPage.Event.Messages).Blocks) require.Len(t, block.GetDataview().Relations, len(bundle.MustGetType(bundle.TypeKeyPage).Relations)) @@ -104,7 +104,7 @@ func TestRelationAdd(t *testing.T) { respOpenNewPage = mw.BlockOpen(&pb.RpcBlockOpenRequest{BlockId: mw.GetAnytype().PredefinedBlocks().SetPages}) require.Equal(t, 0, int(respOpenNewPage.Error.Code), respOpenNewPage.Error.Description) require.Len(t, respOpenNewPage.Event.Messages, 2) - block = getBlockById("dataview", getEventBlockShow(respOpenNewPage.Event.Messages).Blocks) + block = getBlockById("dataview", getEventObjectShow(respOpenNewPage.Event.Messages).Blocks) require.Len(t, block.GetDataview().Relations, len(bundle.MustGetType(bundle.TypeKeyPage).Relations)) }) @@ -125,7 +125,7 @@ func TestRelationAdd(t *testing.T) { respOpenNewPage = mw.BlockOpen(&pb.RpcBlockOpenRequest{BlockId: mw.GetAnytype().PredefinedBlocks().SetPages}) require.Equal(t, 0, int(respOpenNewPage.Error.Code), respOpenNewPage.Error.Description) require.Len(t, respOpenNewPage.Event.Messages, 2) - block = getBlockById("dataview", getEventBlockShow(respOpenNewPage.Event.Messages).Blocks) + block = getBlockById("dataview", getEventObjectShow(respOpenNewPage.Event.Messages).Blocks) require.Len(t, block.GetDataview().Relations, len(bundle.MustGetType(bundle.TypeKeyPage).Relations)+1) respAccountCreate := mw.AccountSelect(&pb.RpcAccountSelectRequest{Id: mw.GetAnytype().Account(), RootPath: rootPath}) @@ -133,7 +133,7 @@ func TestRelationAdd(t *testing.T) { respOpenNewPage = mw.BlockOpen(&pb.RpcBlockOpenRequest{BlockId: mw.GetAnytype().PredefinedBlocks().SetPages}) require.Equal(t, 0, int(respOpenNewPage.Error.Code), respOpenNewPage.Error.Description) require.Len(t, respOpenNewPage.Event.Messages, 2) - block = getBlockById("dataview", getEventBlockShow(respOpenNewPage.Event.Messages).Blocks) + block = getBlockById("dataview", getEventObjectShow(respOpenNewPage.Event.Messages).Blocks) require.Len(t, block.GetDataview().Relations, len(bundle.MustGetType(bundle.TypeKeyPage).Relations)+1) }) @@ -173,7 +173,7 @@ func TestRelationAdd(t *testing.T) { respOpenNewPage = mw.BlockOpen(&pb.RpcBlockOpenRequest{BlockId: respPageCreate.PageId}) require.Equal(t, 0, int(respOpenNewPage.Error.Code), respOpenNewPage.Error.Description) - blockShow := getEventBlockShow(respOpenNewPage.Event.Messages) + blockShow := getEventObjectShow(respOpenNewPage.Event.Messages) relFromSet1 := pbtypes.GetRelation(blockShow.Relations, respSetRelCreate1.RelationKey) require.NotNil(t, relFromSet1) @@ -193,7 +193,7 @@ func TestRelationAdd(t *testing.T) { respOpenNewPage = mw.BlockOpen(&pb.RpcBlockOpenRequest{BlockId: respPageCreate.PageId}) require.Equal(t, 0, int(respOpenNewPage.Error.Code), respOpenNewPage.Error.Description) - blockShow := getEventBlockShow(respOpenNewPage.Event.Messages) + blockShow := getEventObjectShow(respOpenNewPage.Event.Messages) for _, rel := range bundle.MustGetType(bundle.TypeKeyTask).Relations { var found bool @@ -227,7 +227,7 @@ func TestRelationAdd(t *testing.T) { respOpenNewPage = mw.BlockOpen(&pb.RpcBlockOpenRequest{BlockId: respPageCreate.PageId}) require.Equal(t, 0, int(respOpenNewPage.Error.Code), respOpenNewPage.Error.Description) - blockShow = getEventBlockShow(respOpenNewPage.Event.Messages) + blockShow = getEventObjectShow(respOpenNewPage.Event.Messages) for _, rel := range bundle.MustGetType(bundle.TypeKeyTask).Relations { var found bool for _, relInObj := range blockShow.Relations { @@ -255,7 +255,7 @@ func TestRelationAdd(t *testing.T) { respOpenNewPage = mw.BlockOpen(&pb.RpcBlockOpenRequest{BlockId: mw.GetAnytype().PredefinedBlocks().SetPages}) require.Equal(t, 0, int(respOpenNewPage.Error.Code), respOpenNewPage.Error.Description) require.Len(t, respOpenNewPage.Event.Messages, 2) - block = getBlockById("dataview", getEventBlockShow(respOpenNewPage.Event.Messages).Blocks) + block = getBlockById("dataview", getEventObjectShow(respOpenNewPage.Event.Messages).Blocks) }) t.Run("update_cant_change_format", func(t *testing.T) { @@ -275,7 +275,7 @@ func TestRelationAdd(t *testing.T) { respOpenNewPage = mw.BlockOpen(&pb.RpcBlockOpenRequest{BlockId: mw.GetAnytype().PredefinedBlocks().SetPages}) require.Equal(t, 0, int(respOpenNewPage.Error.Code), respOpenNewPage.Error.Description) require.Len(t, respOpenNewPage.Event.Messages, 2) - block = getBlockById("dataview", getEventBlockShow(respOpenNewPage.Event.Messages).Blocks) + block = getBlockById("dataview", getEventObjectShow(respOpenNewPage.Event.Messages).Blocks) require.Equal(t, relName, block.GetDataview().Relations[len(block.GetDataview().Relations)-1].Name) }) @@ -298,7 +298,7 @@ func TestRelationAdd(t *testing.T) { respOpenNewPage = mw.BlockOpen(&pb.RpcBlockOpenRequest{BlockId: mw.GetAnytype().PredefinedBlocks().SetPages}) require.Equal(t, 0, int(respOpenNewPage.Error.Code), respOpenNewPage.Error.Description) require.Len(t, respOpenNewPage.Event.Messages, 2) - block = getBlockById("dataview", getEventBlockShow(respOpenNewPage.Event.Messages).Blocks) + block = getBlockById("dataview", getEventObjectShow(respOpenNewPage.Event.Messages).Blocks) require.Equal(t, "new_changed", block.GetDataview().Relations[len(block.GetDataview().Relations)-1].Name) }) @@ -313,7 +313,7 @@ func TestRelationAdd(t *testing.T) { respOpenNewPage = mw.BlockOpen(&pb.RpcBlockOpenRequest{BlockId: mw.GetAnytype().PredefinedBlocks().SetPages}) require.Equal(t, 0, int(respOpenNewPage.Error.Code), respOpenNewPage.Error.Description) require.Len(t, respOpenNewPage.Event.Messages, 2) - block = getBlockById("dataview", getEventBlockShow(respOpenNewPage.Event.Messages).Blocks) + block = getBlockById("dataview", getEventObjectShow(respOpenNewPage.Event.Messages).Blocks) }) t.Run("delete_correct", func(t *testing.T) { @@ -332,7 +332,7 @@ func TestRelationAdd(t *testing.T) { respOpenNewPage = mw.BlockOpen(&pb.RpcBlockOpenRequest{BlockId: mw.GetAnytype().PredefinedBlocks().SetPages}) require.Equal(t, 0, int(respOpenNewPage.Error.Code), respOpenNewPage.Error.Description) require.Len(t, respOpenNewPage.Event.Messages, 2) - block = getBlockById("dataview", getEventBlockShow(respOpenNewPage.Event.Messages).Blocks) + block = getBlockById("dataview", getEventObjectShow(respOpenNewPage.Event.Messages).Blocks) require.Nil(t, getRelationByKey(block.GetDataview().Relations, relKey)) }) @@ -408,7 +408,7 @@ func TestRelationAdd(t *testing.T) { require.Equal(t, 0, int(respOpenNewPage.Error.Code), respOpenNewPage.Error.Description) require.Len(t, respOpenNewPage.Event.Messages, 1) - relOnPage := getRelationByKey(getEventBlockShow(respOpenNewPage.Event.Messages).Relations, foundRel.Key) + relOnPage := getRelationByKey(getEventObjectShow(respOpenNewPage.Event.Messages).Relations, foundRel.Key) require.Equal(t, foundRel.Key, relOnPage.Key) respOptAdd := mw.BlockDataviewRecordRelationOptionAdd(&pb.RpcBlockDataviewRecordRelationOptionAddRequest{ @@ -441,7 +441,7 @@ func TestRelationAdd(t *testing.T) { require.Equal(t, 0, int(respOpenNewPage.Error.Code), respOpenNewPage.Error.Description) require.Len(t, respOpenNewPage.Event.Messages, 1) - relOnPage = getRelationByKey(getEventBlockShow(respOpenNewPage.Event.Messages).Relations, foundRel.Key) + relOnPage = getRelationByKey(getEventObjectShow(respOpenNewPage.Event.Messages).Relations, foundRel.Key) require.Equal(t, foundRel.Key, relOnPage.Key) require.Len(t, relOnPage.SelectDict, 3) }) @@ -630,7 +630,7 @@ func TestRelationAdd(t *testing.T) { respOpenNewPage := mw.BlockOpen(&pb.RpcBlockOpenRequest{BlockId: mw.GetAnytype().PredefinedBlocks().SetPages}) require.Equal(t, 0, int(respOpenNewPage.Error.Code), respOpenNewPage.Error.Description) - block := getBlockById("dataview", getEventBlockShow(respOpenNewPage.Event.Messages).Blocks) + block := getBlockById("dataview", getEventObjectShow(respOpenNewPage.Event.Messages).Blocks) for _, test := range tests { var relFound bool for _, rel := range block.GetDataview().Relations { @@ -785,7 +785,7 @@ func TestCustomType(t *testing.T) { respOpenCustomTypeObject := mw.BlockOpen(&pb.RpcBlockOpenRequest{BlockId: customObjectId}) require.Equal(t, 0, int(respOpenCustomTypeObject.Error.Code), respOpenCustomTypeObject.Error.Description) require.Len(t, respOpenCustomTypeObject.Event.Messages, 1) - show := getEventBlockShow(respOpenCustomTypeObject.Event.Messages) + show := getEventObjectShow(respOpenCustomTypeObject.Event.Messages) require.NotNil(t, show) profile := getDetailsForContext(show.Details, mw.GetAnytype().PredefinedBlocks().Profile) @@ -830,7 +830,7 @@ func TestCustomType(t *testing.T) { require.Equal(t, getEventRecordsSet(respOpenCustomTypeSet.Event.Messages).Records[0].Fields["id"].GetStringValue(), respCreateRecordInCustomTypeSet.Record.Fields["id"].GetStringValue()) break } - show = getEventBlockShow(respOpenCustomTypeSet.Event.Messages) + show = getEventObjectShow(respOpenCustomTypeSet.Event.Messages) require.NotNil(t, show) respSearch2 := mw.ObjectSearch(&pb.RpcObjectSearchRequest{Filters: []*model.BlockContentDataviewFilter{{ @@ -851,7 +851,7 @@ func TestBundledType(t *testing.T) { respOpenPage := mw.BlockOpen(&pb.RpcBlockOpenRequest{BlockId: respCreatePage.PageId}) require.Equal(t, 0, int(respOpenPage.Error.Code), respOpenPage.Error.Description) - show := getEventBlockShow(respOpenPage.Event.Messages) + show := getEventObjectShow(respOpenPage.Event.Messages) require.NotNil(t, show) pageDetails := getDetailsForContext(show.Details, respCreatePage.PageId) @@ -865,7 +865,7 @@ func TestBundledType(t *testing.T) { respOpenPagesSet := mw.BlockOpen(&pb.RpcBlockOpenRequest{BlockId: mw.GetAnytype().PredefinedBlocks().SetPages}) require.Equal(t, 0, int(respOpenPagesSet.Error.Code), respOpenPagesSet.Error.Description) - show = getEventBlockShow(respOpenPagesSet.Event.Messages) + show = getEventObjectShow(respOpenPagesSet.Event.Messages) require.NotNil(t, show) recordsSet := getEventRecordsSet(respOpenPagesSet.Event.Messages) @@ -881,7 +881,7 @@ func TestBundledType(t *testing.T) { respOpenPagesSet = mw.BlockOpen(&pb.RpcBlockOpenRequest{BlockId: mw.GetAnytype().PredefinedBlocks().SetPages}) require.Equal(t, 0, int(respOpenPagesSet.Error.Code), respOpenPagesSet.Error.Description) - show = getEventBlockShow(respOpenPagesSet.Event.Messages) + show = getEventObjectShow(respOpenPagesSet.Event.Messages) require.NotNil(t, show) require.Len(t, getEventRecordsSet(respOpenPagesSet.Event.Messages).Records, 2) @@ -906,16 +906,16 @@ func getEventRecordsSet(msgs []*pb.EventMessage) *pb.EventBlockDataviewRecordsSe return nil } -func getEventBlockShow(msgs []*pb.EventMessage) *pb.EventBlockShow { +func getEventObjectShow(msgs []*pb.EventMessage) *pb.EventObjectShow { for _, msg := range msgs { - if v, ok := msg.Value.(*pb.EventMessageValueOfBlockShow); ok { - return v.BlockShow + if v, ok := msg.Value.(*pb.EventMessageValueOfObjectShow); ok { + return v.ObjectShow } } return nil } -func getDetailsForContext(msgs []*pb.EventBlockSetDetails, contextId string) *types2.Struct { +func getDetailsForContext(msgs []*pb.EventObjectDetailsSet, contextId string) *types2.Struct { for _, msg := range msgs { if msg.Id == contextId { return msg.Details diff --git a/pkg/lib/core/config/config.go b/pkg/lib/core/config/config.go index 4652e29e0..9d6981546 100644 --- a/pkg/lib/core/config/config.go +++ b/pkg/lib/core/config/config.go @@ -29,15 +29,15 @@ var DefaultConfig = Config{ } type Config struct { - HostAddr string `json:"host_addr,omitempty" envconfig:"host_addr"` - Offline bool `json:"offline,omitempty" envconfig:"offline"` - InMemoryDS bool `json:"in_memory_ds,omitempty" envconfig:"in_memory_ds"` - FullTextSearch bool `json:"full_text_search,omitempty" envconfig:"full_text_search"` - CafeP2PAddr string `json:"cafe_p2p_addr,omitempty" envconfig:"cafe_p2p_addr"` - CafeGRPCAddr string `json:"cafe_grpc_addr,omitempty" envconfig:"cafe_grpc_addr"` - WebGatewayBaseUrl string `json:"web_gateway_base_url,omitempty" envconfig:"web_gateway_base_url"` - DisablePubsub bool `json:"disable_pubsub,omitempty" envconfig:"disable_pubsub"` - DisableDirectConnection bool `json:"disable_direct_connection,omitempty" envconfig:"disable_direct_connection"` + HostAddr string `json:"host_addr,omitempty" envconfig:"host_addr"` + Offline bool `json:"offline,omitempty" envconfig:"offline"` + InMemoryDS bool `json:"in_memory_ds,omitempty" envconfig:"in_memory_ds"` + FullTextSearch bool `json:"full_text_search,omitempty" envconfig:"full_text_search"` + CafeP2PAddr string `json:"cafe_p2p_addr,omitempty" envconfig:"cafe_p2p_addr"` + CafeGRPCAddr string `json:"cafe_grpc_addr,omitempty" envconfig:"cafe_grpc_addr"` + WebGatewayBaseUrl string `json:"web_gateway_base_url,omitempty" envconfig:"web_gateway_base_url"` + DisablePubsub bool `json:"disable_pubsub,omitempty" envconfig:"disable_pubsub"` + DisableDirectConnection bool `json:"disable_direct_connection,omitempty" envconfig:"disable_direct_connection"` } var mu = sync.Mutex{} diff --git a/util/pbtypes/compare_test.go b/util/pbtypes/compare_test.go index 35bfd581c..141398530 100644 --- a/util/pbtypes/compare_test.go +++ b/util/pbtypes/compare_test.go @@ -200,4 +200,4 @@ func TestRelationsDiff(t *testing.T) { } }) } -} \ No newline at end of file +} diff --git a/util/pbtypes/pbtypes.go b/util/pbtypes/pbtypes.go index 3da1fdd73..c4dbadb2f 100644 --- a/util/pbtypes/pbtypes.go +++ b/util/pbtypes/pbtypes.go @@ -299,4 +299,4 @@ func RelationIdToKey(id string) (string, error) { return strings.TrimPrefix(id, addr.BundledRelationURLPrefix), nil } return "", fmt.Errorf("incorrect id format") -} \ No newline at end of file +}