2022-12-25 20:27:37 +01:00

69 lines
2.1 KiB
Go

package nodedebugrpc
import (
"context"
"github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/object/treegetter"
"github.com/anytypeio/go-anytype-infrastructure-experiments/node/debug/nodedebugrpc/nodedebugrpcproto"
"github.com/anytypeio/go-anytype-infrastructure-experiments/node/nodespace"
"github.com/anytypeio/go-anytype-infrastructure-experiments/node/storage"
)
type rpcHandler struct {
treeCache treegetter.TreeGetter
spaceService nodespace.Service
storageService storage.NodeStorage
}
func (r *rpcHandler) DumpTree(ctx context.Context, request *nodedebugrpcproto.DumpTreeRequest) (resp *nodedebugrpcproto.DumpTreeResponse, err error) {
tree, err := r.treeCache.GetTree(context.Background(), request.SpaceId, request.DocumentId)
if err != nil {
return
}
dump, err := tree.DebugDump()
if err != nil {
return
}
resp = &nodedebugrpcproto.DumpTreeResponse{
Dump: dump,
}
return
}
func (r *rpcHandler) AllTrees(ctx context.Context, request *nodedebugrpcproto.AllTreesRequest) (resp *nodedebugrpcproto.AllTreesResponse, err error) {
space, err := r.spaceService.GetSpace(ctx, request.SpaceId)
if err != nil {
return
}
heads := space.DebugAllHeads()
var trees []*nodedebugrpcproto.Tree
for _, head := range heads {
trees = append(trees, &nodedebugrpcproto.Tree{
Id: head.Id,
Heads: head.Heads,
})
}
resp = &nodedebugrpcproto.AllTreesResponse{Trees: trees}
return
}
func (r *rpcHandler) AllSpaces(ctx context.Context, request *nodedebugrpcproto.AllSpacesRequest) (resp *nodedebugrpcproto.AllSpacesResponse, err error) {
ids, err := r.storageService.AllSpaceIds()
if err != nil {
return
}
resp = &nodedebugrpcproto.AllSpacesResponse{SpaceIds: ids}
return
}
func (r *rpcHandler) TreeParams(ctx context.Context, request *nodedebugrpcproto.TreeParamsRequest) (resp *nodedebugrpcproto.TreeParamsResponse, err error) {
tree, err := r.treeCache.GetTree(context.Background(), request.SpaceId, request.DocumentId)
if err != nil {
return
}
resp = &nodedebugrpcproto.TreeParamsResponse{
RootId: tree.Root().Id,
HeadIds: tree.Heads(),
}
return
}