github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/cmd/fbchaind/export_app.go (about) 1 package main 2 3 import ( 4 "log" 5 "path/filepath" 6 7 "github.com/fibonacci-chain/fbc/app" 8 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/server" 9 sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types" 10 tmtypes "github.com/fibonacci-chain/fbc/libs/tendermint/types" 11 "github.com/spf13/cobra" 12 ) 13 14 func exportAppCmd(ctx *server.Context) *cobra.Command { 15 cmd := &cobra.Command{ 16 Use: "export-app", 17 Short: "export current latest version of application db to new db into export dir", 18 Run: func(cmd *cobra.Command, args []string) { 19 log.Println("--------- export start ---------") 20 export(ctx) 21 log.Println("--------- export success ---------") 22 }, 23 } 24 cmd.Flags().String(sdk.FlagDBBackend, tmtypes.DBBackend, "Database backend: goleveldb | rocksdb") 25 return cmd 26 } 27 28 // export current latest version of application db to new db into export dir 29 func export(ctx *server.Context) { 30 fromApp := createApp(ctx, "data") 31 toApp := createApp(ctx, "export") 32 33 version := fromApp.LastCommitID().Version 34 log.Println("export app version ", version) 35 36 err := fromApp.Export(toApp.BaseApp, version) 37 if err != nil { 38 panicError(err) 39 } 40 } 41 42 func createApp(ctx *server.Context, dataPath string) *app.FBChainApp { 43 rootDir := ctx.Config.RootDir 44 dataDir := filepath.Join(rootDir, dataPath) 45 db, err := sdk.NewDB(applicationDB, dataDir) 46 panicError(err) 47 exapp := newApp(ctx.Logger, db, nil) 48 return exapp.(*app.FBChainApp) 49 }