Files
Prad NukalaandGitHub 13e6c3e84d Master (#1262)
* clear

* feat: Add everything

* fix: Commenht
2025-10-03 14:45:52 -04:00

287 lines
6.8 KiB
Go

package cli
import (
"context"
"fmt"
"github.com/cosmos/cosmos-sdk/client"
"github.com/cosmos/cosmos-sdk/client/flags"
"github.com/spf13/cobra"
"github.com/sonr-io/sonr/x/dex/types"
)
// NewQueryCmd creates and returns the query command
func NewQueryCmd() *cobra.Command {
cmd := &cobra.Command{
Use: types.ModuleName,
Short: fmt.Sprintf("Querying commands for the %s module", types.ModuleName),
DisableFlagParsing: true,
SuggestionsMinimumDistance: 2,
RunE: client.ValidateCmd,
}
cmd.AddCommand(
CmdQueryParams(),
CmdQueryAccount(),
CmdQueryAccounts(),
CmdQueryBalance(),
CmdQueryPool(),
CmdQueryOrders(),
CmdQueryHistory(),
)
return cmd
}
// CmdQueryParams queries the module parameters
func CmdQueryParams() *cobra.Command {
cmd := &cobra.Command{
Use: "params",
Short: "Query the current DEX module parameters",
Args: cobra.NoArgs,
RunE: func(cmd *cobra.Command, _ []string) error {
clientCtx, err := client.GetClientQueryContext(cmd)
if err != nil {
return err
}
queryClient := types.NewQueryClient(clientCtx)
res, err := queryClient.Params(context.Background(), &types.QueryParamsRequest{})
if err != nil {
return err
}
return clientCtx.PrintProto(res)
},
}
flags.AddQueryFlagsToCmd(cmd)
return cmd
}
// CmdQueryAccount queries a DEX account
func CmdQueryAccount() *cobra.Command {
cmd := &cobra.Command{
Use: "account [did] [connection-id]",
Short: "Query a DEX account by DID and connection",
Args: cobra.ExactArgs(2),
RunE: func(cmd *cobra.Command, args []string) error {
clientCtx, err := client.GetClientQueryContext(cmd)
if err != nil {
return err
}
did := args[0]
connectionID := args[1]
queryClient := types.NewQueryClient(clientCtx)
res, err := queryClient.Account(context.Background(), &types.QueryAccountRequest{
Did: did,
ConnectionId: connectionID,
})
if err != nil {
return err
}
return clientCtx.PrintProto(res)
},
}
flags.AddQueryFlagsToCmd(cmd)
return cmd
}
// CmdQueryAccounts queries all DEX accounts
func CmdQueryAccounts() *cobra.Command {
cmd := &cobra.Command{
Use: "accounts",
Short: "Query all DEX accounts",
Args: cobra.NoArgs,
RunE: func(cmd *cobra.Command, _ []string) error {
clientCtx, err := client.GetClientQueryContext(cmd)
if err != nil {
return err
}
did, _ := cmd.Flags().GetString("did")
queryClient := types.NewQueryClient(clientCtx)
pageReq, err := client.ReadPageRequest(cmd.Flags())
if err != nil {
return err
}
res, err := queryClient.Accounts(context.Background(), &types.QueryAccountsRequest{
Did: did,
Pagination: pageReq,
})
if err != nil {
return err
}
return clientCtx.PrintProto(res)
},
}
cmd.Flags().String("did", "", "Filter by DID")
flags.AddQueryFlagsToCmd(cmd)
flags.AddPaginationFlagsToCmd(cmd, "accounts")
return cmd
}
// CmdQueryBalance queries remote chain balances
func CmdQueryBalance() *cobra.Command {
cmd := &cobra.Command{
Use: "balance [did] [connection-id]",
Short: "Query remote chain balances for a DID",
Args: cobra.ExactArgs(2),
RunE: func(cmd *cobra.Command, args []string) error {
clientCtx, err := client.GetClientQueryContext(cmd)
if err != nil {
return err
}
did := args[0]
connectionID := args[1]
denom, _ := cmd.Flags().GetString("denom")
queryClient := types.NewQueryClient(clientCtx)
res, err := queryClient.Balance(context.Background(), &types.QueryBalanceRequest{
Did: did,
ConnectionId: connectionID,
Denom: denom,
})
if err != nil {
return err
}
return clientCtx.PrintProto(res)
},
}
cmd.Flags().String("denom", "", "Filter by specific denomination")
flags.AddQueryFlagsToCmd(cmd)
return cmd
}
// CmdQueryPool queries pool information
func CmdQueryPool() *cobra.Command {
cmd := &cobra.Command{
Use: "pool [connection-id] [pool-id]",
Short: "Query pool information on a remote chain",
Args: cobra.ExactArgs(2),
RunE: func(cmd *cobra.Command, args []string) error {
clientCtx, err := client.GetClientQueryContext(cmd)
if err != nil {
return err
}
connectionID := args[0]
poolID := args[1]
queryClient := types.NewQueryClient(clientCtx)
res, err := queryClient.Pool(context.Background(), &types.QueryPoolRequest{
ConnectionId: connectionID,
PoolId: poolID,
})
if err != nil {
return err
}
return clientCtx.PrintProto(res)
},
}
flags.AddQueryFlagsToCmd(cmd)
return cmd
}
// CmdQueryOrders queries orders for a DID
func CmdQueryOrders() *cobra.Command {
cmd := &cobra.Command{
Use: "orders [did] [connection-id]",
Short: "Query orders for a DID on a specific connection",
Args: cobra.ExactArgs(2),
RunE: func(cmd *cobra.Command, args []string) error {
clientCtx, err := client.GetClientQueryContext(cmd)
if err != nil {
return err
}
did := args[0]
connectionID := args[1]
status, _ := cmd.Flags().GetString("status")
queryClient := types.NewQueryClient(clientCtx)
pageReq, err := client.ReadPageRequest(cmd.Flags())
if err != nil {
return err
}
res, err := queryClient.Orders(context.Background(), &types.QueryOrdersRequest{
Did: did,
ConnectionId: connectionID,
Status: status,
Pagination: pageReq,
})
if err != nil {
return err
}
return clientCtx.PrintProto(res)
},
}
cmd.Flags().String("status", "", "Filter by order status (pending|open|filled|cancelled)")
flags.AddQueryFlagsToCmd(cmd)
flags.AddPaginationFlagsToCmd(cmd, "orders")
return cmd
}
// CmdQueryHistory queries transaction history
func CmdQueryHistory() *cobra.Command {
cmd := &cobra.Command{
Use: "history [did]",
Short: "Query transaction history for a DID",
Args: cobra.ExactArgs(1),
RunE: func(cmd *cobra.Command, args []string) error {
clientCtx, err := client.GetClientQueryContext(cmd)
if err != nil {
return err
}
did := args[0]
connectionID, _ := cmd.Flags().GetString("connection")
operationType, _ := cmd.Flags().GetString("type")
queryClient := types.NewQueryClient(clientCtx)
pageReq, err := client.ReadPageRequest(cmd.Flags())
if err != nil {
return err
}
res, err := queryClient.History(context.Background(), &types.QueryHistoryRequest{
Did: did,
ConnectionId: connectionID,
OperationType: operationType,
Pagination: pageReq,
})
if err != nil {
return err
}
return clientCtx.PrintProto(res)
},
}
cmd.Flags().String("connection", "", "Filter by connection ID")
cmd.Flags().String("type", "", "Filter by transaction type (swap|liquidity|order)")
flags.AddQueryFlagsToCmd(cmd)
flags.AddPaginationFlagsToCmd(cmd, "history")
return cmd
}