Nov 1, 2024

Como migrar do Prisma para o Drizzle

Guia passo a passo para uma transição tranquila e sem sofrimentos.

Esse sou euEscrito por Victor Mesquita

Recentemente realizei uma migração de uma codebase de um projeto que utilizava o Prisma para o Drizzle, e resolvi compartilhar algumas experiências que (eu sofri mas você não precisa) talvez possam ser úteis para você.

Antes de comerçar, o Drizzle ORM (ou somente Drizzle) é um Object Relational Mapper (ORM) leve, rápido e typesafe. Ele permite que você escreva suas queries no formato similar ao SQL e oferece suporte nativo a serverless.

Principais vantagens do Drizzle

Vamos falar um pouco sobre as principais vantagens do Drizzle em relação à outros ORMs e entender o porquê de migrar para ele.

Escrevendo SQL com segurança

O Drizzle permite que você escreva consultas que se assemelham muito ao SQL, porém são escritas utilizando typescript, que permite a verificação de tipagem estática. Isso significa que você pode aproveitar o "autocomplete" do seu editor e também evitar erros comuns de sintaxe.

Um exemplo simples de uma query para buscar um usuário pelo ID:

import { eq } from 'drizzle-orm';
import { users } from './schema';
const user = await db.select().from(users).where(eq(users.id, 1));
SELECT * FROM users WHERE id = 1;

    Performático

    Ele foi projetado para ser rápido e eficiente, minimizando a sobrecarga que alguns ORMs tradicionais podem introduzir. Isso é especialmente benéfico em ambientes serverless ou de alto impacto, onde a performance é crucial.

    Ainda não está convencido? Da uma olhada nesse benchmark 👇

    0 VUs
    01k
    1k2k
    2k3k
    3k
    Drizzle vs Prisma

    Micro database size
    E-commerce
    PostgreSQL

    Lenovo M720q
    Linux 5.15.0-86-generic x86_64
    Intel Core i3-9100T
    RAM 32GB DDR4 2666MHz
    Benchmark Config
    Drizzle
    v0.33.0
    prisma
    v5.18.0
    avg latency: 0.0ms
    avg latency: 0.0ms
    avg: 0 req/sec
    Failed requests
    Drizzle handled xNaN more requests
    0
    avg: 0 req/sec
    Failed requests
    Drizzle handled xNaN more requests
    0
    avg CPU load: 0.0%
    avg CPU load: 0.0%

    Comunidade crescente e ativa

    Apesar de ser relativamente novo, o Drizzle tem uma comunidade ativa e em crescimento. Isso significa que você pode encontrar suporte, tutoriais e exemplos que serão de grande ajuda na hora de aprender e resolver problemas.

    Passo a passo para migrar

    Analisar o esquema atual

    Antes de começar, é importante entender como está estruturado o seu esquema no Prisma. Revise os modelos definidos no arquivo schema.prisma e identifique as tabelas, relações e campos principais.

    Criar o esquema no Drizzle

    No Drizzle, você define o esquema utilizando TypeScript. Aqui está um exemplo de como migrar um modelo simples:

    model User {
    id Int @id @default(autoincrement())
    name String
    email String @unique
    posts Post[]
    }
    model Post {
    id Int @id @default(autoincrement())
    title String
    content String?
    authorId Int
    author User @relation(fields: [authorId], references: [id])
    }

      Configurar a conexão com o banco

      No Prisma, a conexão com o banco é configurada no arquivo prisma/.env. No Drizzle, você pode configurar a conexão diretamente no código:

      import { PrismaClient } from '@prisma/client'
      const prisma = new PrismaClient()
      export default prisma

        Migrar queries

        Agora, é hora de migrar as queries. Aqui estão alguns exemplos de como converter queries comuns do Prisma para o Drizzle:

        const user = await prisma.user.findUnique({
        where: { id: 1 },
        include: {
        posts: true,
        },
        });

          Testar e validar

          Após migrar o esquema e as queries, teste sua aplicação para garantir que tudo está funcionando como esperado. Verifique se as consultas estão retornando os dados corretos e se o desempenho está adequado.

          Conclusão

          Migrar para o Drizzle pode parecer uma tarefa desafiadora, mas, seguindo um passo a passo estruturado se torna um processo tranquilo!

          Então para começar, eu recomendo iniciar com um projeto pequeno para se familiarizar com o processo e, aos poucos, entender como o ORM funciona antes de migrar projetos maiores!

          Obrigado por ler até aqui!


          Obrigado por ler! Se você quer ver mais conteúdos no futuro, considere me seguir no Twitter ou se inscreva no feed RSS.