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