diff --git a/util/cmd/debug/api/client/service.go b/util/cmd/debug/api/client/service.go index 70593ae2..1acdcb91 100644 --- a/util/cmd/debug/api/client/service.go +++ b/util/cmd/debug/api/client/service.go @@ -14,6 +14,12 @@ var log = logger.NewNamed(CName) type Service interface { CreateSpace(ctx context.Context, ip string, request *apiproto.CreateSpaceRequest) (resp *apiproto.CreateSpaceResponse, err error) + DeriveSpace(ctx context.Context, ip string, request *apiproto.DeriveSpaceRequest) (resp *apiproto.DeriveSpaceResponse, err error) + CreateDocument(ctx context.Context, ip string, request *apiproto.CreateDocumentRequest) (resp *apiproto.CreateDocumentResponse, err error) + DeleteDocument(ctx context.Context, ip string, request *apiproto.DeleteDocumentRequest) (resp *apiproto.DeleteDocumentResponse, err error) + AddText(ctx context.Context, ip string, request *apiproto.AddTextRequest) (resp *apiproto.AddTextResponse, err error) + AllTrees(ctx context.Context, ip string, request *apiproto.AllTreesRequest) (resp *apiproto.AllTreesResponse, err error) + AllSpaces(ctx context.Context, ip string, request *apiproto.AllSpacesRequest) (resp *apiproto.AllSpacesResponse, err error) app.Component } @@ -41,3 +47,51 @@ func (s *service) CreateSpace(ctx context.Context, ip string, request *apiproto. } return cl.CreateSpace(ctx, request) } + +func (s *service) DeriveSpace(ctx context.Context, ip string, request *apiproto.DeriveSpaceRequest) (resp *apiproto.DeriveSpaceResponse, err error) { + cl, err := s.client.GetClient(ctx, ip) + if err != nil { + return + } + return cl.DeriveSpace(ctx, request) +} + +func (s *service) CreateDocument(ctx context.Context, ip string, request *apiproto.CreateDocumentRequest) (resp *apiproto.CreateDocumentResponse, err error) { + cl, err := s.client.GetClient(ctx, ip) + if err != nil { + return + } + return cl.CreateDocument(ctx, request) +} + +func (s *service) DeleteDocument(ctx context.Context, ip string, request *apiproto.DeleteDocumentRequest) (resp *apiproto.DeleteDocumentResponse, err error) { + cl, err := s.client.GetClient(ctx, ip) + if err != nil { + return + } + return cl.DeleteDocument(ctx, request) +} + +func (s *service) AddText(ctx context.Context, ip string, request *apiproto.AddTextRequest) (resp *apiproto.AddTextResponse, err error) { + cl, err := s.client.GetClient(ctx, ip) + if err != nil { + return + } + return cl.AddText(ctx, request) +} + +func (s *service) AllTrees(ctx context.Context, ip string, request *apiproto.AllTreesRequest) (resp *apiproto.AllTreesResponse, err error) { + cl, err := s.client.GetClient(ctx, ip) + if err != nil { + return + } + return cl.AllTrees(ctx, request) +} + +func (s *service) AllSpaces(ctx context.Context, ip string, request *apiproto.AllSpacesRequest) (resp *apiproto.AllSpacesResponse, err error) { + cl, err := s.client.GetClient(ctx, ip) + if err != nil { + return + } + return cl.AllSpaces(ctx, request) +} diff --git a/util/cmd/debug/api/service.go b/util/cmd/debug/api/service.go index a2c9d302..fb80a7d0 100644 --- a/util/cmd/debug/api/service.go +++ b/util/cmd/debug/api/service.go @@ -55,7 +55,6 @@ func (s *service) Call(server peers.Peer, cmdName string, params []string) (res cmd Command commands map[string]Command ) - switch server.PeerType { case peers.PeerTypeClient: commands = s.clientCommands @@ -83,6 +82,63 @@ func (s *service) registerClientCommands(client client.Service) { res = resp.Id return }} + s.clientCommands["derive-space"] = Command{Cmd: func(server peers.Peer, params []string) (res string, err error) { + if len(params) != 0 { + err = ErrIncorrectParamsCount + return + } + resp, err := client.DeriveSpace(context.Background(), server.Address, &apiproto.DeriveSpaceRequest{}) + if err != nil { + return + } + res = resp.Id + return + }} + s.clientCommands["create-document"] = Command{Cmd: func(server peers.Peer, params []string) (res string, err error) { + if len(params) != 1 { + err = ErrIncorrectParamsCount + return + } + resp, err := client.CreateDocument(context.Background(), server.Address, &apiproto.CreateDocumentRequest{ + SpaceId: params[0], + }) + if err != nil { + return + } + res = resp.Id + return + }} + s.clientCommands["delete-document"] = Command{Cmd: func(server peers.Peer, params []string) (res string, err error) { + if len(params) != 2 { + err = ErrIncorrectParamsCount + return + } + _, err = client.DeleteDocument(context.Background(), server.Address, &apiproto.DeleteDocumentRequest{ + SpaceId: params[0], + DocumentId: params[1], + }) + if err != nil { + return + } + res = "deleted" + return + }} + s.clientCommands["add-text"] = Command{Cmd: func(server peers.Peer, params []string) (res string, err error) { + if len(params) != 3 { + err = ErrIncorrectParamsCount + return + } + resp, err := client.AddText(context.Background(), server.Address, &apiproto.AddTextRequest{ + SpaceId: params[0], + DocumentId: params[1], + Text: params[2], + }) + if err != nil { + return + } + res = resp.DocumentId + return + }} } func (s *service) registerNodeCommands(node node.Service) { diff --git a/util/cmd/debug/debug.go b/util/cmd/debug/debug.go index 5b273d33..3a29c7bf 100644 --- a/util/cmd/debug/debug.go +++ b/util/cmd/debug/debug.go @@ -13,6 +13,7 @@ import ( "github.com/anytypeio/go-anytype-infrastructure-experiments/util/cmd/debug/peers" "github.com/anytypeio/go-anytype-infrastructure-experiments/util/cmd/debug/stdin" "go.uber.org/zap" + "go.uber.org/zap/zapcore" "net/http" "os" "os/signal" @@ -28,6 +29,19 @@ var ( flagHelp = flag.Bool("h", false, "show help and exit") ) +func init() { + config := zap.NewProductionEncoderConfig() + config.EncodeTime = zapcore.ISO8601TimeEncoder + + logFile, err := os.OpenFile("debug.json", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644) + if err != nil { + panic(err) + } + + core := zapcore.NewCore(zapcore.NewJSONEncoder(config), zapcore.AddSync(logFile), zapcore.DebugLevel) + logger.SetDefault(zap.New(core, zap.AddCaller(), zap.AddStacktrace(zapcore.ErrorLevel))) +} + func main() { flag.Parse() diff --git a/util/cmd/debug/stdin/service.go b/util/cmd/debug/stdin/service.go index 716829b2..f51535f2 100644 --- a/util/cmd/debug/stdin/service.go +++ b/util/cmd/debug/stdin/service.go @@ -3,6 +3,7 @@ package stdin import ( "bufio" "context" + "fmt" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/app" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/app/logger" "github.com/anytypeio/go-anytype-infrastructure-experiments/util/cmd/debug/api" @@ -13,7 +14,7 @@ import ( const CName = "debug.stdin" -var log = logger.NewNamed(CName).Sugar() +var log = logger.NewNamed(CName) type Service interface { app.ComponentRunnable @@ -50,31 +51,32 @@ func (s *service) Close(ctx context.Context) (err error) { func (s *service) readStdin() { reader := bufio.NewReader(os.Stdin) for { + fmt.Print("> ") str, err := reader.ReadString('\n') if err != nil { - log.Errorf("Error in read string: %s", err) + fmt.Println("error in read string:", err) return } // trimming newline str = str[:len(str)-1] - log.Debug(str) split := strings.Split(str, " ") if len(split) < 2 { - log.Error("incorrect number of arguments") + fmt.Println("incorrect number of arguments") continue } peer, err := s.peers.Get(split[0]) if err != nil { - log.Error("no such peer") + fmt.Println("no such peer", err) continue } + res, err := s.api.Call(peer, split[1], split[2:]) if err != nil { - log.Errorf("Error in performing request: %s", err) - return + fmt.Println("error in performing request:", err) + continue } - log.Debug(res) + fmt.Println(res) } }