QueryResponses

Trait QueryResponses 

Source
pub trait QueryResponses: JsonSchema {
    // Required methods
    fn response_schemas() -> BTreeMap<String, RootSchema>;
    fn response_schemas_cw() -> BTreeMap<String, Schema>;
}
Expand description

A trait for tying QueryMsg variants (different contract queries) to their response types. This is mostly useful for the generated contracted API description when using cargo schema.

Using the derive macro is the preferred way of implementing this trait.

§Examples

use cosmwasm_schema::QueryResponses;
use cw_schema::Schemaifier;
use schemars::JsonSchema;

#[derive(JsonSchema, Schemaifier)]
struct AccountInfo {
    IcqHandle: String,
}

#[derive(JsonSchema, Schemaifier, QueryResponses)]
enum QueryMsg {
    #[returns(Vec<String>)]
    Denoms {},
    #[returns(AccountInfo)]
    AccountInfo { account: String },
}

You can compose multiple queries using #[query_responses(nested)]. This might be useful together with #[serde(untagged)]. If the nested flag is set, no returns attributes are necessary on the enum variants. Instead, the response types are collected from the nested enums.

#[derive(JsonSchema, Schemaifier, QueryResponses)]
#[query_responses(nested)]
#[serde(untagged)]
enum QueryMsg {
    MsgA(QueryA),
    MsgB(QueryB),
}

#[derive(JsonSchema, Schemaifier, QueryResponses)]
enum QueryA {
    #[returns(Vec<String>)]
    Denoms {},
}

#[derive(JsonSchema, Schemaifier, QueryResponses)]
enum QueryB {
    #[returns(AccountInfo)]
    AccountInfo { account: String },
}

Required Methods§

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§