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  }