Pular para o conteúdo
Skillpedia
Bancos de dados48 mil · #2306

azure-cosmos-ts

Faz seu agente manipular dados NoSQL no Azure Cosmos DB usando JavaScript ou TypeScript. É bom para operações rápidas como criar, ler, atualizar e apagar dados.

O que ela faz

Este código permite que você gerencie dados em um banco de dados chamado Azure Cosmos DB. Você pode criar, ler, atualizar, excluir e pesquisar informações armazenadas lá.

Quando usar

  • ✓Quando você precisa adicionar novos dados a um banco de dados.
  • ✓Quando você precisa encontrar informações específicas em seu banco de dados.
  • ✓Quando você precisa modificar ou remover dados existentes.

Exemplo do que pedir para a IA

“Adicione um novo produto com nome 'Camiseta', preço 29.99 e categoria 'roupas'.”

Quer saber mais? Abra as seções abaixo.

Como usar

O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.

Link da skill

https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/azure-cosmos-ts/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/azure-cosmos-ts/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
Como funciona

Ele se conecta ao seu banco de dados Azure Cosmos DB usando credenciais que você fornece. Em seguida, ele usa comandos específicos para realizar operações como criar ou buscar dados.

Instalação

Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.

No terminal (Claude Code, Codex, Cursor), na pasta do projeto:

npx skills add sickn33/agentic-awesome-skills --skill azure-cosmos-ts

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/azure-cosmos-ts/SKILL.md -o SKILL.md
Conteúdo técnico (SKILL.md)

Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.

@azure/cosmos (TypeScript/JavaScript)

SDK do plano de dados para operações da API NoSQL do Azure Cosmos DB — CRUD em documentos, consultas, operações em massa.

⚠️ Plano de Dados vs. Plano de Gerenciamento

  • Este SDK (@azure/cosmos): Operações CRUD em documentos, consultas, stored procedures
  • SDK de Gerenciamento (@azure/arm-cosmosdb): Cria contas, bancos de dados, contêineres via ARM

Instalação

npm install @azure/cosmos @azure/identity

Versão Atual: 4.9.0
Node.js: >= 20.0.0

Variáveis de Ambiente

COSMOS_ENDPOINT=https://<account>.documents.azure.com:443/
COSMOS_DATABASE=<database-name>
COSMOS_CONTAINER=<container-name>
# For key-based auth only (prefer AAD)
COSMOS_KEY=<account-key>

Autenticação

AAD com DefaultAzureCredential (Recomendado)

import { CosmosClient } from "@azure/cosmos";
import { DefaultAzureCredential } from "@azure/identity";

const client = new CosmosClient({
  endpoint: process.env.COSMOS_ENDPOINT!,
  aadCredentials: new DefaultAzureCredential(),
});

Autenticação Baseada em Chave

import { CosmosClient } from "@azure/cosmos";

// Option 1: Endpoint + Key
const client = new CosmosClient({
  endpoint: process.env.COSMOS_ENDPOINT!,
  key: process.env.COSMOS_KEY!,
});

// Option 2: Connection String
const client = new CosmosClient(process.env.COSMOS_CONNECTION_STRING!);

Hierarquia de Recursos

CosmosClient
└── Database
    └── Container
        ├── Items (documents)
        ├── Scripts (stored procedures, triggers, UDFs)
        └── Conflicts

Operações Principais

Configuração de Banco de Dados e Contêiner

const { database } = await client.databases.createIfNotExists({
  id: "my-database",
});

const { container } = await database.containers.createIfNotExists({
  id: "my-container",
  partitionKey: { paths: ["/partitionKey"] },
});

Criar Documento

interface Product {
  id: string;
  partitionKey: string;
  name: string;
  price: number;
}

const item: Product = {
  id: "product-1",
  partitionKey: "electronics",
  name: "Laptop",
  price: 999.99,
};

const { resource } = await container.items.create<Product>(item);

Ler Documento

const { resource } = await container
  .item("product-1", "electronics") // id, partitionKey
  .read<Product>();

if (resource) {
  console.log(resource.name);
}

Atualizar Documento (Substituir)

const { resource: existing } = await container
  .item("product-1", "electronics")
  .read<Product>();

if (existing) {
  existing.price = 899.99;
  const { resource: updated } = await container
    .item("product-1", "electronics")
    .replace<Product>(existing);
}

Upsert Documento

const item: Product = {
  id: "product-1",
  partitionKey: "electronics",
  name: "Laptop Pro",
  price: 1299.99,
};

const { resource } = await container.items.upsert<Product>(item);

Excluir Documento

await container.item("product-1", "electronics").delete();

Patch Documento (Atualização Parcial)

import { PatchOperation } from "@azure/cosmos";

const operations: PatchOperation[] = [
  { op: "replace", path: "/price", value: 799.99 },
  { op: "add", path: "/discount", value: true },
  { op: "remove", path: "/oldField" },
];

const { resource } = await container
  .item("product-1", "electronics")
  .patch<Product>(operations);

Consultas

Consulta Simples

const { resources } = await container.items
  .query<Product>("SELECT * FROM c WHERE c.price < 1000")
  .fetchAll();

Consulta Parametrizada (Recomendado)

import { SqlQuerySpec } from "@azure/cosmos";

const querySpec: SqlQuerySpec = {
  query: "SELECT * FROM c WHERE c.partitionKey = @category AND c.price < @maxPrice",
  parameters: [
    { name: "@category", value: "electronics" },
    { name: "@maxPrice", value: 1000 },
  ],
};

const { resources } = await container.items
  .query<Product>(querySpec)
  .fetchAll();

Consulta com Paginação

const queryIterator = container.items.query<Product>(querySpec, {
  maxItemCount: 10, // Items per page
});

while (queryIterator.hasMoreResults()) {
  const { resources, continuationToken } = await queryIterator.fetchNext();
  console.log(`Page with ${resources?.length} items`);
  // Use continuationToken for next page if needed
}

Consulta Cross-Partition

const { resources } = await container.items
  .query<Product>(

…
Perguntas frequentes

Qual a diferença entre este código e o '@azure/arm-cosmosdb'?

Este código (`@azure/cosmos`) lida com os dados dentro do seu banco de dados (criar, ler, atualizar, excluir). O outro código (`@azure/arm-cosmosdb`) é usado para gerenciar a estrutura do banco de dados em si (criar contas, bancos de dados, contêineres).

Como o código se conecta ao banco de dados?

Ele usa um 'endpoint' (endereço do banco de dados) e uma 'chave' ou credenciais do Azure Active Directory (AAD) para se autenticar e acessar os dados.

O que são 'documentos' e 'contêineres'?

Pense em um 'contêiner' como uma tabela em um banco de dados tradicional e em 'documentos' como as linhas dentro dessa tabela. Os documentos geralmente são armazenados em formato JSON.

Detalhes

Descrição original do autor

Azure Cosmos DB JavaScript/TypeScript SDK (@azure/cosmos) for data plane operations. Use for CRUD operations on documents, queries, bulk operations, and container management.

repo: sickn33/agentic-awesome-skills

Popularidade

Estrelas no GitHub
48 mil
Posição no ranking
#2306
Licença
MIT
Atualizada em
15/10/2026

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas