Operações de estado da tabela

O provedor de estado dispõe de operações de tabela para armazenar o estado.

Observação: Esses exemplos utilizam vcr.getInstanceState() para o estado compartilhado entre todas as réplicas. Para o estado por conversa, use vcr.createSessionWithId(id) com um UUID determinístico do contexto da solicitação (por exemplo, conversation_uuid de um retorno de chamada de voz). Nunca use vcr.createSession() em âmbito global — veja Provedor de estado: escopo da sessão para mais detalhes.

Definir valores da tabela

Usando o nome de uma tabela, você pode armazenar pares chave-valor para recuperá-los posteriormente.

Assinatura do método

mapSet(table: string, keyValuePairs: any)

Definição de valores de tabela

const state = vcr.getInstanceState();

const customer = req.body.customer;

await state.mapSet("customers", { [customer.number]: JSON.stringify(customer) });

Incrementar os valores da tabela

Usando o nome e a chave de uma tabela, é possível incrementar seu valor.

Assinatura do método

mapIncrement(table: string, key: string, increment: number)

Incrementando os valores da tabela

const number = req.body.number;

await state.mapIncrement("customers", number, 1);

Obter um valor da tabela

Usando o nome de uma tabela e uma chave, é possível recuperar um valor.

Assinatura do método

mapGetValue<T>(table: string, key: string)

Obter um valor da tabela

const number = req.body.number;

const customer = await state.mapGetValue("customers", number);

Como obter valores de várias tabelas

Usando o nome de uma tabela e um array de chaves, é possível recuperar vários valores.

Assinatura do método

mapGetMultiple<T>(table: string, keys: string[])

Como obter valores de várias tabelas

const number = req.body.number;
const otherNumber = "447000000001";

const customers = await state.mapGetMultiple("customers", [number, otherNumber]);

Ler os valores da tabela

Ao definir um padrão, é possível percorrer uma tabela, começando em um cursor especificado.

Assinatura do método

mapScan(table: string, cursor: string, pattern: string, count: number)

Analisando os valores da tabela

const name = req.body.name;

await state.mapScan("customers", "0", name, 0);

Obtendo todos os valores da tabela

Usando o nome de uma tabela, é possível recuperar todos os valores armazenados.

Assinatura do método

mapGetValues<T>(table: string)

Obtendo todos os valores da tabela

const customers = await state.mapGetValues("customers");

Reserve uma mesa

Usando o nome de uma tabela, é possível recuperar toda a tabela.

Assinatura do método

mapGetAll<T>(table: string)

Reservar uma mesa

const customerNumberPairs = await state.mapGetAll("customers");

Obter o comprimento de uma tabela

Usando o nome de uma tabela, é possível obter o comprimento da tabela.

Assinatura do método

mapLength<T>(table: string)

Como obter o comprimento de uma tabela

const tableLength = await state.mapLength("customers");

Verificar se uma chave de tabela existe

Usando o nome de uma tabela e uma chave, é possível verificar se uma chave existe nessa tabela.

Assinatura do método

mapExists(table: string, key: string)

Verificando se uma chave de tabela existe

const number = req.body.number;

const isExistingCustomer = await state.mapExists("customers", number);

Excluir valores da tabela

Usando o nome de uma tabela e uma lista de chaves, é possível excluir valores.

Assinatura do método

mapDelete(table: string,  keys: string[])

Exclusão de valores da tabela

const number = req.body.number;

await state.mapDelete("customers", [number]);

Excluir uma tabela

Usando o nome de uma tabela, é possível excluir a tabela inteira.

Assinatura do método

delete(table: string)

Exclusão de uma tabela

await state.delete("customers");