Redirect logs and add more commands

This commit is contained in:
mcrakhman 2022-12-01 21:28:36 +01:00
parent a370efda87
commit bdae3a76d0
No known key found for this signature in database
GPG Key ID: DED12CFEF5B8396B
4 changed files with 135 additions and 9 deletions

View File

@ -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)
}

View File

@ -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) {

View File

@ -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()

View File

@ -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)
}
}