InícioDocs para devsBusca: os 7 kinds e o filtro vazio
Exemplos por kind 4 min de leitura

Busca: os 7 kinds e o filtro vazio

Oito funções concretas, categorias de missão/diário, recentes autorizados e validação.

Use o api recebido por um bloco montado do módulo. Estas funções são trechos completos de JavaScript; importe uma delas em seu main.js e chame dentro de mount({ api, signal }). O exemplo de pacote mínimo está em Sistemas e módulos.

Como GM, crie documentos sintéticos com os nomes abaixo numa campanha descartável e conceda leitura ao jogador quando quiser testar visibilidade. A busca precisa estar habilitada no host. Cada consulta usa pelo menos dois caracteres. O filtro vazio pesquisa todas as categorias; omitir kind tem o mesmo efeito.

kind identifica a categoria do resultado. Missões e quadros continuam sendo documentos de diário: seu type no resultado é journal, enquanto o kind é quest ou quest_board. O filtro journal retorna os demais diários, não as missões e os quadros.

kind: "": Todos os tipos de documento

Pré-requisito: crie ao menos dois documentos Beacon em categorias diferentes.

javascript
export async function findAll(api, signal) {
  return api.table.search("Beacon", {
    kind: "",
    signal,
  });
}

Resultado esperado: Até 20 documentos legíveis de qualquer categoria que correspondam a Beacon, ordenados por título.

Valide: execute findAll(api, signal) como GM e jogador; remova a leitura de um documento e repita. A ausência de resultados é um array vazio, não um erro.

kind: "actor": Atores

Pré-requisito: crie Beacon Scout na categoria actor.

javascript
export async function findActors(api, signal) {
  return api.table.search("Beacon Scout", {
    kind: "actor",
    signal,
  });
}

Resultado esperado: Documentos legíveis com kind: "actor" que correspondam a Beacon Scout.

Valide: execute findActors(api, signal) como GM e jogador; remova a leitura de um documento e repita. A ausência de resultados é um array vazio, não um erro.

kind: "item": Itens

Pré-requisito: crie Beacon Rope na categoria item.

javascript
export async function findItems(api, signal) {
  return api.table.search("Beacon Rope", {
    kind: "item",
    signal,
  });
}

Resultado esperado: Documentos legíveis com kind: "item" que correspondam a Beacon Rope.

Valide: execute findItems(api, signal) como GM e jogador; remova a leitura de um documento e repita. A ausência de resultados é um array vazio, não um erro.

kind: "journal": Diários

Pré-requisito: crie Beacon Notes na categoria journal.

javascript
export async function findJournals(api, signal) {
  return api.table.search("Beacon Notes", {
    kind: "journal",
    signal,
  });
}

Resultado esperado: Documentos legíveis com kind: "journal" que correspondam a Beacon Notes.

Valide: execute findJournals(api, signal) como GM e jogador; remova a leitura de um documento e repita. A ausência de resultados é um array vazio, não um erro.

kind: "quest": Missões

Pré-requisito: crie Beacon Rescue na categoria quest.

javascript
export async function findQuests(api, signal) {
  return api.table.search("Beacon Rescue", {
    kind: "quest",
    signal,
  });
}

Resultado esperado: Documentos legíveis com kind: "quest" que correspondam a Beacon Rescue.

Valide: execute findQuests(api, signal) como GM e jogador; remova a leitura de um documento e repita. A ausência de resultados é um array vazio, não um erro.

kind: "quest_board": Quadros de missões

Pré-requisito: crie Beacon Jobs na categoria quest_board.

javascript
export async function findQuestBoards(api, signal) {
  return api.table.search("Beacon Jobs", {
    kind: "quest_board",
    signal,
  });
}

Resultado esperado: Documentos legíveis com kind: "quest_board" que correspondam a Beacon Jobs.

Valide: execute findQuestBoards(api, signal) como GM e jogador; remova a leitura de um documento e repita. A ausência de resultados é um array vazio, não um erro.

kind: "scene": Cenas

Pré-requisito: crie Beacon Harbor na categoria scene.

javascript
export async function findScenes(api, signal) {
  return api.table.search("Beacon Harbor", {
    kind: "scene",
    signal,
  });
}

Resultado esperado: Documentos legíveis com kind: "scene" que correspondam a Beacon Harbor.

Valide: execute findScenes(api, signal) como GM e jogador; remova a leitura de um documento e repita. A ausência de resultados é um array vazio, não um erro.

kind: "compendium": Compêndios

Pré-requisito: crie Beacon Collection na categoria compendium.

javascript
export async function findCompendiums(api, signal) {
  return api.table.search("Beacon Collection", {
    kind: "compendium",
    signal,
  });
}

Resultado esperado: Documentos legíveis com kind: "compendium" que correspondam a Beacon Collection.

Valide: execute findCompendiums(api, signal) como GM e jogador; remova a leitura de um documento e repita. A ausência de resultados é um array vazio, não um erro.

Resultados recentes e erros

Para recentes, use consulta vazia e até 12 referências previamente retornadas pela busca. Use type: "journal" para missão/quadro; não coloque quest em recent.type. O servidor verifica novamente campanha e leitura a cada chamada.

javascript
export async function recentDocuments(api, previousResults, signal) {
  const recent = previousResults.slice(0, 12).map(({ id, type }) => ({ id, type }));
  return api.table.search("", { recent, signal });
}

Uma consulta de menos de dois caracteres sem recent retorna []. Mais de 200 caracteres, filtro desconhecido ou referência inválida são entradas rejeitadas. Busca desabilitada ou vínculo revogado impedem a chamada; o adaptador expõe códigos como permission_denied e invalid_data. cancelled/stale_context indicam cancelamento ou fechamento do bloco. Não use a lista de resultados como cache de permissões.

Como usar a IA para criar uma busca por tipo

text
Na release alvo, confira table/services.py e domain-api.js. Adapte o exemplo de kind quest_board para um seletor de quadros legíveis. Mostre título com textContent, use signal do bloco e trate resultados vazios, permissões revogadas e cancelamento. Não invente api.quests nem exponha notas privadas. Entregue um teste de GM/jogador com dados Beacon.