package main import ( "bytes" "context" "io" "os" "mbase/pkg/client" "mbase/pkg/mbctl" ) func (util *Util) GetDump(ctx context.Context) (*mbctl.GetDumpResult, error) { var err error res := &mbctl.GetDumpResult{} grpcConn, cli, err := client.NewClient(&util.access) if err != nil { return res, err } defer grpcConn.Close() file := os.Stdout if util.filename == "-" { util.filename = "" } if util.filename != "" { file, err = os.OpenFile(util.filename, os.O_CREATE|os.O_WRONLY, 0640) if err != nil { return res, err } defer file.Close() } params := &mbctl.GetDumpParams{} res, err = cli.GetDump(ctx, params) if err != nil { return res, err } _, err = file.Write([]byte(res.Dump)) if err != nil { return res, err } res.Dump = "" return res, err } func (util *Util) RestoreDump(ctx context.Context) (*mbctl.RestoreDumpResult, error) { var err error res := &mbctl.RestoreDumpResult{} grpcConn, cli, err := client.NewClient(&util.access) if err != nil { return res, err } defer grpcConn.Close() file := os.Stdin if util.filename != "" { file, err = os.Open(util.filename) if err != nil { return res, err } defer file.Close() } buffer := bytes.NewBuffer(nil) _, err = io.Copy(buffer, file) if err != nil { return res, err } params := &mbctl.RestoreDumpParams{ Dump: string(buffer.Bytes()), } res, err = cli.RestoreDump(ctx, params) if err != nil { return res, err } return res, err }