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.

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:

#[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