github.com/Finschia/finschia-sdk@v0.48.1/x/evidence/client/cli/query.go (about) 1 package cli 2 3 import ( 4 "context" 5 "encoding/hex" 6 "fmt" 7 "strings" 8 9 "github.com/spf13/cobra" 10 11 "github.com/Finschia/finschia-sdk/client" 12 "github.com/Finschia/finschia-sdk/client/flags" 13 "github.com/Finschia/finschia-sdk/types/query" 14 "github.com/Finschia/finschia-sdk/version" 15 "github.com/Finschia/finschia-sdk/x/evidence/types" 16 ) 17 18 // GetQueryCmd returns the CLI command with all evidence module query commands 19 // mounted. 20 func GetQueryCmd() *cobra.Command { 21 cmd := &cobra.Command{ 22 Use: types.ModuleName, 23 Short: "Query for evidence by hash or for all (paginated) submitted evidence", 24 Long: strings.TrimSpace( 25 fmt.Sprintf(`Query for specific submitted evidence by hash or query for all (paginated) evidence: 26 27 Example: 28 $ %s query %s DF0C23E8634E480F84B9D5674A7CDC9816466DEC28A3358F73260F68D28D7660 29 $ %s query %s --page=2 --limit=50 30 `, 31 version.AppName, types.ModuleName, version.AppName, types.ModuleName, 32 ), 33 ), 34 Args: cobra.MaximumNArgs(1), 35 DisableFlagParsing: true, 36 SuggestionsMinimumDistance: 2, 37 RunE: QueryEvidenceCmd(), 38 } 39 40 flags.AddQueryFlagsToCmd(cmd) 41 flags.AddPaginationFlagsToCmd(cmd, "evidence") 42 43 return cmd 44 } 45 46 // QueryEvidenceCmd returns the command handler for evidence querying. Evidence 47 // can be queried for by hash or paginated evidence can be returned. 48 func QueryEvidenceCmd() func(*cobra.Command, []string) error { 49 return func(cmd *cobra.Command, args []string) error { 50 clientCtx, err := client.GetClientQueryContext(cmd) 51 if err != nil { 52 return err 53 } 54 if len(args) > 0 { 55 return queryEvidence(clientCtx, args[0]) 56 } 57 58 pageReq, err := client.ReadPageRequest(cmd.Flags()) 59 if err != nil { 60 return err 61 } 62 63 return queryAllEvidence(clientCtx, pageReq) 64 } 65 } 66 67 func queryEvidence(clientCtx client.Context, hash string) error { 68 decodedHash, err := hex.DecodeString(hash) 69 if err != nil { 70 return fmt.Errorf("invalid evidence hash: %w", err) 71 } 72 73 queryClient := types.NewQueryClient(clientCtx) 74 75 params := &types.QueryEvidenceRequest{EvidenceHash: decodedHash} 76 res, err := queryClient.Evidence(context.Background(), params) 77 if err != nil { 78 return err 79 } 80 81 return clientCtx.PrintProto(res.Evidence) 82 } 83 84 func queryAllEvidence(clientCtx client.Context, pageReq *query.PageRequest) error { 85 queryClient := types.NewQueryClient(clientCtx) 86 87 params := &types.QueryAllEvidenceRequest{ 88 Pagination: pageReq, 89 } 90 91 res, err := queryClient.AllEvidence(context.Background(), params) 92 if err != nil { 93 return err 94 } 95 96 return clientCtx.PrintProto(res) 97 }