Introdução ao Prisma: ORM moderno para TypeScript
\n\nPrisma é um ORM (Object-Relational Mapping) moderno para TypeScript e Node.js, que muda radicalmente a abordagem de trabalho com bancos de dados. Ao contrário de ORMs tradicionais, como Sequelize ou TypeORM, o Prisma oferece um modelo de dados declarativo, geração automática de tipos e uma API intuitiva. A biblioteca suporta PostgreSQL, MySQL, SQLite, SQL Server, MongoDB e CockroachDB.
\n\nO principal objetivo do Prisma é tornar o trabalho com bancos de dados seguro, produtivo e conveniente. Graças à integração com TypeScript, você obtém autocompletar e verificação de tipos em tempo de compilação, o que reduz significativamente o número de erros em tempo de execução. O Prisma consiste em três componentes principais:
\n\n- \n
- Prisma Client — cliente gerado automaticamente para trabalhar com o banco de dados \n
- Prisma Migrate — sistema de gerenciamento de migrações \n
- Prisma Studio — GUI para visualizar e editar dados \n
Instalação do Prisma
\n\nA instalação do Prisma em um projeto TypeScript é feita via npm. Primeiro, crie um novo projeto:
\n\nmkdir my-prisma-project\ncd my-prisma-project\nnpm init -y\n\nInstale o Prisma CLI e o Prisma Client:
\n\nnpm install prisma @prisma/client --save\n\nInicialize o Prisma no projeto:
\n\nnpx prisma init\n\nEste comando criará o diretório prisma com o arquivo schema.prisma e o arquivo .env para variáveis de ambiente.
Início rápido: exemplo de código
\n\nVamos criar uma aplicação simples para gerenciar usuários. Primeiro, defina o modelo em prisma/schema.prisma:
generator client {\n provider = "prisma-client-js"\n}\n\ndatasource db {\n provider = "sqlite"\n url = env("DATABASE_URL")\n}\n\nmodel User {\n id Int @id @default(autoincrement())\n email String @unique\n name String?\n posts Post[]\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nmodel Post {\n id Int @id @default(autoincrement())\n title String\n content String?\n published Boolean @default(false)\n author User @relation(fields: [authorId], references: [id])\n authorId Int\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nExecute a migração para criar as tabelas no SQLite:
\n\nnpx prisma migrate dev --name init\n\nAgora, crie o arquivo index.ts com um exemplo de uso:
import { PrismaClient } from '@prisma/client'\n\nconst prisma = new PrismaClient()\n\nasync function main() {\n // Criando um usuário\n const user = await prisma.user.create({\n data: {\n email: 'alice@example.com',\n name: 'Alice',\n posts: {\n create: { title: 'Hello World' }\n }\n }\n })\n console.log('Created user:', user)\n\n // Obtendo todos os usuários com seus posts\n const users = await prisma.user.findMany({\n include: { posts: true }\n })\n console.log('All users:', JSON.stringify(users, null, 2))\n}\n\nmain()\n .catch(e => console.error(e))\n .finally(async () => await prisma.$disconnect())\n\nExecute o código:
\n\nnpx ts-node index.ts\n\nPrincipais métodos do Prisma Client
\n\n1. findUnique
\nO que faz: Encontra um único registro por um identificador único (id, email, etc.).
\nParâmetros:
\n- \n
where— objeto com condições de busca (obrigatório) \n include— (opcional) para incluir modelos relacionados \n select— (opcional) para selecionar campos específicos \n
Exemplo:
\nconst user = await prisma.user.findUni Também na biblioteca
Envio de SMS em JavaScript (Node.js): API, bibliotecas e exemplos de código
Parsing de HTML em C# (.NET): bibliotecas HtmlAgilityPack e AngleSharp
Trabalhando com Markdown em Kotlin: bibliotecas e parsers
Trabalho com datas em PHP: visão geral de bibliotecas e ferramentas