69 lines
2.1 KiB
Go
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
|
|
}
|