mirror of
https://github.com/0glabs/0g-chain.git
synced 2024-12-24 15:25:18 +00:00
R4R: add params query to pricefeed module (#311)
* fix: remove redundant debt limit param * wip: test pricefeed genesis * fix: pricefeed querier * fix: comments, naming * fix: query path * fix: store methods * fix: query methods * add params query to pricefeed module * minor formatting updates, removed commented out legacy code, etc. Co-authored-by: Kevin Davis <karzak@users.noreply.github.com>
This commit is contained in:
parent
d04aad5cc9
commit
710a29980f
@ -25,6 +25,7 @@ func GetQueryCmd(queryRoute string, cdc *codec.Codec) *cobra.Command {
|
|||||||
GetCmdCurrentPrice(queryRoute, cdc),
|
GetCmdCurrentPrice(queryRoute, cdc),
|
||||||
GetCmdRawPrices(queryRoute, cdc),
|
GetCmdRawPrices(queryRoute, cdc),
|
||||||
GetCmdMarkets(queryRoute, cdc),
|
GetCmdMarkets(queryRoute, cdc),
|
||||||
|
GetCmdQueryParams(queryRoute, cdc),
|
||||||
)...)
|
)...)
|
||||||
|
|
||||||
return pricefeedQueryCmd
|
return pricefeedQueryCmd
|
||||||
@ -107,3 +108,28 @@ func GetCmdMarkets(queryRoute string, cdc *codec.Codec) *cobra.Command {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetCmdQueryParams queries the pricefeed module parameters
|
||||||
|
func GetCmdQueryParams(queryRoute string, cdc *codec.Codec) *cobra.Command {
|
||||||
|
return &cobra.Command{
|
||||||
|
Use: "params",
|
||||||
|
Short: "get the pricefeed module parameters",
|
||||||
|
Long: "Get the current global pricefeed module parameters.",
|
||||||
|
Args: cobra.NoArgs,
|
||||||
|
RunE: func(cmd *cobra.Command, args []string) error {
|
||||||
|
cliCtx := context.NewCLIContext().WithCodec(cdc)
|
||||||
|
|
||||||
|
// Query
|
||||||
|
route := fmt.Sprintf("custom/%s/%s", queryRoute, types.QueryGetParams)
|
||||||
|
res, _, err := cliCtx.QueryWithData(route, nil)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Decode and print results
|
||||||
|
var out types.Params
|
||||||
|
cdc.MustUnmarshalJSON(res, &out)
|
||||||
|
return cliCtx.PrintOutput(out)
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -42,9 +42,7 @@ func GetCmdPostPrice(cdc *codec.Codec) *cobra.Command {
|
|||||||
RunE: func(cmd *cobra.Command, args []string) error {
|
RunE: func(cmd *cobra.Command, args []string) error {
|
||||||
cliCtx := context.NewCLIContext().WithCodec(cdc)
|
cliCtx := context.NewCLIContext().WithCodec(cdc)
|
||||||
txBldr := auth.NewTxBuilderFromCLI().WithTxEncoder(utils.GetTxEncoder(cdc))
|
txBldr := auth.NewTxBuilderFromCLI().WithTxEncoder(utils.GetTxEncoder(cdc))
|
||||||
// if err := cliCtx.EnsureAccountExists(); err != nil {
|
|
||||||
// return err
|
|
||||||
// }
|
|
||||||
price, err := sdk.NewDecFromStr(args[1])
|
price, err := sdk.NewDecFromStr(args[1])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -17,6 +17,7 @@ func registerQueryRoutes(cliCtx context.CLIContext, r *mux.Router) {
|
|||||||
r.HandleFunc(fmt.Sprintf("/%s/rawprices/{%s}", types.ModuleName, restName), queryRawPricesHandler(cliCtx)).Methods("GET")
|
r.HandleFunc(fmt.Sprintf("/%s/rawprices/{%s}", types.ModuleName, restName), queryRawPricesHandler(cliCtx)).Methods("GET")
|
||||||
r.HandleFunc(fmt.Sprintf("/%s/currentprice/{%s}", types.ModuleName, restName), queryCurrentPriceHandler(cliCtx)).Methods("GET")
|
r.HandleFunc(fmt.Sprintf("/%s/currentprice/{%s}", types.ModuleName, restName), queryCurrentPriceHandler(cliCtx)).Methods("GET")
|
||||||
r.HandleFunc(fmt.Sprintf("/%s/markets", types.ModuleName), queryMarketsHandler(cliCtx)).Methods("GET")
|
r.HandleFunc(fmt.Sprintf("/%s/markets", types.ModuleName), queryMarketsHandler(cliCtx)).Methods("GET")
|
||||||
|
r.HandleFunc(fmt.Sprintf("/%s/params", types.ModuleName), queryParamsHandlerFn(cliCtx)).Methods("GET")
|
||||||
}
|
}
|
||||||
|
|
||||||
func queryRawPricesHandler(cliCtx context.CLIContext) http.HandlerFunc {
|
func queryRawPricesHandler(cliCtx context.CLIContext) http.HandlerFunc {
|
||||||
@ -55,3 +56,17 @@ func queryMarketsHandler(cliCtx context.CLIContext) http.HandlerFunc {
|
|||||||
rest.PostProcessResponse(w, cliCtx, res)
|
rest.PostProcessResponse(w, cliCtx, res)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func queryParamsHandlerFn(cliCtx context.CLIContext) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
// Get the params
|
||||||
|
res, height, err := cliCtx.QueryWithData(fmt.Sprintf("custom/pricefeed/%s", types.QueryGetParams), nil)
|
||||||
|
cliCtx = cliCtx.WithHeight(height)
|
||||||
|
if err != nil {
|
||||||
|
rest.WriteErrorResponse(w, http.StatusInternalServerError, err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
// Return the params
|
||||||
|
rest.PostProcessResponse(w, cliCtx, res)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -21,6 +21,8 @@ func NewQuerier(keeper Keeper) sdk.Querier {
|
|||||||
return queryRawPrices(ctx, req, keeper)
|
return queryRawPrices(ctx, req, keeper)
|
||||||
case types.QueryMarkets:
|
case types.QueryMarkets:
|
||||||
return queryMarkets(ctx, req, keeper)
|
return queryMarkets(ctx, req, keeper)
|
||||||
|
case types.QueryGetParams:
|
||||||
|
return queryGetParams(ctx, req, keeper)
|
||||||
default:
|
default:
|
||||||
return nil, sdk.ErrUnknownRequest("unknown pricefeed query endpoint")
|
return nil, sdk.ErrUnknownRequest("unknown pricefeed query endpoint")
|
||||||
}
|
}
|
||||||
@ -80,3 +82,16 @@ func queryMarkets(ctx sdk.Context, req abci.RequestQuery, keeper Keeper) (res []
|
|||||||
|
|
||||||
return bz, nil
|
return bz, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// query params in the auction store
|
||||||
|
func queryGetParams(ctx sdk.Context, req abci.RequestQuery, keeper Keeper) ([]byte, sdk.Error) {
|
||||||
|
// Get params
|
||||||
|
params := keeper.GetParams(ctx)
|
||||||
|
|
||||||
|
// Encode results
|
||||||
|
bz, err := codec.MarshalJSONIndent(keeper.cdc, params)
|
||||||
|
if err != nil {
|
||||||
|
return nil, sdk.ErrInternal(sdk.AppendMsgToErr("could not marshal result to JSON", err.Error()))
|
||||||
|
}
|
||||||
|
return bz, nil
|
||||||
|
}
|
||||||
|
@ -10,7 +10,7 @@ func init() {
|
|||||||
RegisterCodec(ModuleCdc)
|
RegisterCodec(ModuleCdc)
|
||||||
}
|
}
|
||||||
|
|
||||||
// RegisterCode registers concrete types on the Amino code
|
// RegisterCodec registers concrete types on the Amino code
|
||||||
func RegisterCodec(cdc *codec.Codec) {
|
func RegisterCodec(cdc *codec.Codec) {
|
||||||
cdc.RegisterConcrete(MsgPostPrice{}, "pricefeed/MsgPostPrice", nil)
|
cdc.RegisterConcrete(MsgPostPrice{}, "pricefeed/MsgPostPrice", nil)
|
||||||
}
|
}
|
||||||
|
@ -37,7 +37,7 @@ func ErrNoValidPrice(codespace sdk.CodespaceType) sdk.Error {
|
|||||||
return sdk.NewError(codespace, CodeInvalidPrice, fmt.Sprintf("All input prices are expired."))
|
return sdk.NewError(codespace, CodeInvalidPrice, fmt.Sprintf("All input prices are expired."))
|
||||||
}
|
}
|
||||||
|
|
||||||
// ErrInvalidAsset Error constructor for posted price messages for invalid markets
|
// ErrInvalidMarket Error constructor for posted price messages for invalid markets
|
||||||
func ErrInvalidMarket(codespace sdk.CodespaceType, marketId string) sdk.Error {
|
func ErrInvalidMarket(codespace sdk.CodespaceType, marketId string) sdk.Error {
|
||||||
return sdk.NewError(codespace, CodeInvalidAsset, fmt.Sprintf("market %s does not exist", marketId))
|
return sdk.NewError(codespace, CodeInvalidAsset, fmt.Sprintf("market %s does not exist", marketId))
|
||||||
}
|
}
|
||||||
|
@ -10,9 +10,6 @@ import (
|
|||||||
|
|
||||||
func TestMsgPlaceBid_ValidateBasic(t *testing.T) {
|
func TestMsgPlaceBid_ValidateBasic(t *testing.T) {
|
||||||
addr := sdk.AccAddress([]byte("someName"))
|
addr := sdk.AccAddress([]byte("someName"))
|
||||||
// oracles := []Oracle{Oracle{
|
|
||||||
// OracleAddress: addr.String(),
|
|
||||||
// }}
|
|
||||||
price, _ := sdk.NewDecFromStr("0.3005")
|
price, _ := sdk.NewDecFromStr("0.3005")
|
||||||
expiry := tmtime.Now()
|
expiry := tmtime.Now()
|
||||||
negativePrice, _ := sdk.NewDecFromStr("-3.05")
|
negativePrice, _ := sdk.NewDecFromStr("-3.05")
|
||||||
|
@ -11,6 +11,8 @@ const (
|
|||||||
QueryRawPrices = "rawprices"
|
QueryRawPrices = "rawprices"
|
||||||
// QueryMarkets command for assets query
|
// QueryMarkets command for assets query
|
||||||
QueryMarkets = "markets"
|
QueryMarkets = "markets"
|
||||||
|
// QueryGetParams command for params query
|
||||||
|
QueryGetParams = "params"
|
||||||
)
|
)
|
||||||
|
|
||||||
// QueryPricesParams fields for querying prices
|
// QueryPricesParams fields for querying prices
|
||||||
|
Loading…
Reference in New Issue
Block a user