Query

La consulta es un proceso utilizado para extraer datos de una base de datos o acceder a información de estado. Normalmente, los mensajes de consulta disponibles se pueden encontrar en msg.rs o query.rs, según la organización del código por parte del autor del contrato.

Puede realizar consultas utilizando un cliente externo (como una API o mediante la CLI) o dentro de un contrato. Para obtener más información sobre cómo funciona esto, consulte Consulta del estado del contrato.arrow-up-right

Las consultas acceden al almacén de datos de un contrato en modo de solo lectura. Pueden recuperar datos y realizar procesamiento adicional según sea necesario. En consecuencia, se impone un límite de gas.

Las consultas constan de una entrada en la enumeración QueryMsg y se administran dentro de la función Consulta del contrato.

#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum QueryMsg {
  // ResolveAddress returns the current address that the name resolves to
  ResolveRecord { name: String },
  Config {},
}

Luego, el contrato procesa esto en la función de consulta:arrow-up-right

#[cfg_attr(not(feature = "library"), entry_point)]
pub fn query(deps: Deps, env: Env, msg: QueryMsg) -> StdResult<Binary> {
  match msg {
    QueryMsg::ResolveRecord { name } => query_resolver(deps, env, name),
    QueryMsg::Config {} => to_binary(&config_read(deps.storage).load()?),
  }
}

Aquí, query_resolver es simplemente otra función y config_read es una ayuda que encapsula el acceso al almacén de datos.

Last updated