Pular para o conteúdo

Dados e armazenamento

Armazenamento de documentos com escopo de espaço de trabalho, baseado em LiteDB. Exige um espaço de trabalho aberto.

MétodoAssinaturaAsyncDescrição
put(collection, key, data)NãoArmazena um documento
get(collection, key) → StoreDoc | nullNãoRecupera um documento
list(collection, options?) → StoreDoc[]NãoLista documentos de uma coleção
search(collection, query, options?) → StoreDoc[]NãoPesquisa texto dentro de uma coleção
delete(collection, key) → booleanNãoExclui um documento
count(collection) → numberNãoConta documentos
clear(collection)NãoExclui todos os documentos de uma coleção
collections() → string[]NãoLista todos os nomes de coleções

StoreDoc:

{
key: string
data: any
createdAt: string
updatedAt: string
}
async function main() {
g.store.put("products", "item-1", {
name: "Widget",
price: 9.99,
inStock: true
});
const doc = g.store.get("products", "item-1");
if (doc) g.log("Encontrado: " + doc.data.name);
const results = g.store.search("products", "Widget");
g.log("Correspondências: " + results.length);
}

Fila persistente com escopo de espaço de trabalho, níveis de prioridade e suporte a fila de rejeitos. Exige um espaço de trabalho aberto.

MétodoAssinaturaAsyncDescrição
enqueue(name, data, options?)NãoAdiciona um item à fila
dequeue(name) → QueueItem | nullNãoRetira o próximo item da fila
commit(checkoutId)NãoMarca um item retirado como concluído
abort(checkoutId, error?) → booleanNãoRetorna um item à fila ou envia para a fila de rejeitos se exceder tentativas
peek(name) → QueueItem | nullNãoVisualiza o próximo item sem retirá-lo
count(name) → numberNãoConta itens pendentes
clear(name)NãoExclui todos os itens de uma fila
list(name, options?) → QueueItem[]NãoLista itens pendentes
queues() → string[]NãoLista todos os nomes de filas
deadLetter(name, options?) → DeadLetterItem[]NãoLista itens da fila de rejeitos
retry(name, deadLetterId)NãoReenfileira um item rejeitado
waitForItem(name, options?) → Promise<QueueItem | null>SimBloqueia até um item estar disponível

QueueEnqueueOptions:

{
priority?: number
maxRetries?: number
}

QueueItem:

{
id: number
data: any
priority: number
attempts: number
maxRetries: number
enqueuedAt: string
lastAttemptAt?: string
lastError?: string
}
async function main() {
g.queue.enqueue("urls", { url: "https://example.com/page1" });
g.queue.enqueue("urls", { url: "https://example.com/page2" }, { priority: 2 });
const item = g.queue.dequeue("urls");
if (!item) return g.log("Fila vazia");
await g.nav.navigateToUrl(item.data.url);
const html = await g.page.getDom();
g.queue.commit(item.id);
}

Índice Lucene.NET com escopo de espaço de trabalho. Suporta operadores booleanos, wildcards, correspondência fuzzy e consultas por campo. Exige um espaço de trabalho aberto.

MétodoAssinaturaAsyncDescrição
index(fields)NãoIndexa um documento; deve incluir _key e _collection
query(queryString, options?) → SearchResult[]NãoPesquisa usando sintaxe Lucene
delete(collection, key)NãoRemove um documento do índice
deleteByCollection(collection) → numberNãoRemove todos os documentos de uma coleção
count(collection?) → numberNãoConta documentos indexados
clear()NãoLimpa todo o índice

## g.s3.* — armazenamento de objetos compatível com S3

Seção intitulada “## g.s3.* — armazenamento de objetos compatível com S3”

Armazenamento compatível com S3 via MinIO SDK. Funciona com AWS S3, MinIO e serviços compatíveis. O parâmetro conn é o nome de uma credencial com a string de conexão. Bloqueado para scripts originados por MCP.

MétodoAssinaturaAsyncDescrição
listBuckets(conn) → Promise<S3BucketInfo[]>SimLista buckets acessíveis
bucketExists(conn, bucket) → Promise<boolean>SimVerifica se o bucket existe
listObjects(conn, bucket, options?) → Promise<S3ObjectInfo[]>SimLista objetos em um bucket
getObjectText(conn, bucket, key) → Promise<string>SimBaixa objeto como texto UTF-8
getObject(conn, bucket, key, localPath) → PromiseSimBaixa objeto para arquivo local
putObjectText(conn, bucket, key, content, contentType?) → PromiseSimEnvia texto como objeto
putObject(conn, bucket, key, localPath, contentType?) → PromiseSimEnvia arquivo local como objeto
deleteObject(conn, bucket, key) → PromiseSimExclui um objeto
objectExists(conn, bucket, key) → Promise<boolean>SimVerifica se um objeto existe
createBucket(conn, bucket, region?) → PromiseSimCria um bucket
copyObject(conn, srcBucket, srcKey, dstBucket, dstKey) → PromiseSimCópia server-side sem passar dados pelo cliente
getPresignedUrl(conn, bucket, key, options?) → Promise<string>SimGera URL pré-assinada com tempo limitado

Operações MongoDB via MongoDB.Driver. O parâmetro conn é o nome de uma credencial com a string de conexão. Usa agrupamento automático de conexões. Bloqueado para scripts originados por MCP.

MétodoAssinaturaAsyncDescrição
find(conn, db, collection, filter?, options?) → Promise<object[]>SimEncontra documentos correspondentes a um filtro
findOne(conn, db, collection, filter?) → Promise<object | null>SimEncontra o primeiro documento correspondente
insertOne(conn, db, collection, document) → Promise<MongoInsertResult>SimInsere um documento
insertMany(conn, db, collection, documents) → Promise<MongoInsertManyResult>SimInsere vários documentos
updateOne(conn, db, collection, filter, update) → Promise<MongoUpdateResult>SimAtualiza o primeiro documento correspondente
updateMany(conn, db, collection, filter, update) → Promise<MongoUpdateResult>SimAtualiza todos os documentos correspondentes
deleteOne(conn, db, collection, filter) → Promise<MongoDeleteResult>SimExclui o primeiro documento correspondente
deleteMany(conn, db, collection, filter) → Promise<MongoDeleteResult>SimExclui todos os documentos correspondentes
replaceOne(conn, db, collection, filter, replacement) → Promise<MongoUpdateResult>SimSubstitui o primeiro documento correspondente
countDocuments(conn, db, collection, filter?) → Promise<number>SimConta documentos correspondentes
listDatabases(conn) → Promise<string[]>SimLista nomes de bancos
listCollections(conn, db) → Promise<string[]>SimLista coleções em um banco
aggregate(conn, db, collection, pipeline) → Promise<object[]>SimExecuta um fluxo de agregação
createIndex(conn, db, collection, keys, options?) → Promise<string>SimCria índice e retorna o nome
dropCollection(conn, db, collection) → PromiseSimRemove uma coleção
distinct(conn, db, collection, fieldName, filter?) → Promise<any[]>SimObtém valores distintos de um campo
bulkWrite(conn, db, collection, operations) → Promise<MongoBulkWriteResult>SimExecuta várias escritas em lote
async function main() {
const conn = "my-mongo";
const result = await g.mongodb.insertOne(conn, "extracao", "products", {
name: "Widget", price: 9.99, category: "tools"
});
g.log("Inserido: " + result.insertedId);
const docs = await g.mongodb.find(conn, "extracao", "products",
{ price: { $lt: 20 } },
{ sort: { price: 1 }, limit: 10 }
);
g.log("Encontrados " + docs.length + " produtos baratos");
}

Operações PostgreSQL via Npgsql. Use parâmetros posicionais $1, $2, …; nunca interpole valores em strings SQL. O parâmetro conn é o nome de uma credencial com a string de conexão. Usa agrupamento automático de conexões. Bloqueado para scripts originados por MCP.

MétodoAssinaturaAsyncDescrição
query(conn, sql, params?) → Promise<object[]>SimSELECT retornando todas as linhas
queryOne(conn, sql, params?) → Promise<object | null>SimSELECT retornando a primeira linha
execute(conn, sql, params?) → Promise<PgExecuteResult>SimINSERT/UPDATE/DELETE
scalar(conn, sql, params?) → Promise<any>SimRetorna a primeira coluna da primeira linha
transaction(conn, callback) → Promise<any>SimExecuta callback em uma transação (JS apenas)
executeBatch(conn, statements) → Promise<PgBatchResult>SimVárias instruções em uma transação
copyFrom(conn, table, rows, options?) → Promise<PgCopyResult>SimInserção em lote via protocolo COPY
copyTo(conn, query, options?) → Promise<string[][]>SimExportação em lote via protocolo COPY
listDatabases(conn) → Promise<string[]>SimLista bancos não-template
listSchemas(conn, options?) → Promise<string[]>SimLista esquemas
listTables(conn, schema?) → Promise<PgTableInfo[]>SimLista tabelas e visões com estimativa de linhas
describeTable(conn, table, schema?) → Promise<PgColumnInfo[]>SimMetadados de colunas
listIndexes(conn, table, schema?) → Promise<PgIndexInfo[]>SimMetadados de índices
listConstraints(conn, table, schema?) → Promise<PgConstraintInfo[]>SimMetadados de restrições
async function main() {
const conn = "my-postgres";
const rows = await g.postgres.query(conn,
"SELECT id, name, price FROM products WHERE price < $1 ORDER BY price",
[20.00]
);
g.log("Encontrados " + rows.length + " produtos");
const copyResult = await g.postgres.copyFrom(conn, "products", [
["Widget A", 9.99, 100],
["Widget B", 14.99, 50]
], { columns: ["name", "price", "stock"] });
g.log("Importadas " + copyResult.rowsCopied + " linhas");
}

Suporte nativo para consultar e indexar dados em clusters Elasticsearch externos usando Elastic.Clients.Elasticsearch. O parâmetro conn é o nome de uma credencial contendo o objeto JSON de conexão (url e apiKey ou username/password opcionais). Bloqueado para scripts originados por MCP.

MétodoAssinaturaAsyncDescrição
ping(conn) → Promise<boolean>SimVerifica conexão com o cluster
info(conn) → Promise<ElasticsearchInfoResult>SimObtém metadados do cluster
createIndex(conn, indexName, mappingJson?) → Promise<boolean>SimCria índice com mapping JSON opcional
deleteIndex(conn, indexName) → Promise<boolean>SimExclui índice existente
index(conn, indexName, id, document) → Promise<boolean>SimIndexa um objeto JS no cluster
get(conn, indexName, id) → Promise<any>SimObtém documento por ID
bulk(conn, indexName, documents, chunkSize?) → Promise<ElasticsearchBulkResult>SimIngestão de alto throughput com chunking automático
search(conn, indexName, queryDsl) → Promise<any>SimExecuta Query DSL JSON bruto ou objeto JS
async function main() {
const conn = "my-elastic";
const isUp = await g.elasticsearch.ping(conn);
if (!isUp) return g.log("Conexão falhou");
const docs = [{ id: 1, text: "A" }, { id: 2, text: "B" }];
const bulkRes = await g.elasticsearch.bulk(conn, "products", docs, 1000);
g.log(`Indexados ${bulkRes.successful} de ${bulkRes.total}`);
const searchRes = await g.elasticsearch.search(conn, "products", {
query: { match_all: {} }
});
g.log(`Total de hits: ${searchRes.hits.total.value}`);
}