Domine inglês técnico de programação em 2025, seja qual for seu nível. Inscrição gratuita

Prisma: Criando e Executando um Seed
Paulo Clemente

Paulo Clemente

3 min de leitura
prisma

Navegação Rápida:

    Ao desenvolver uma aplicação, especialmente durante a fase de desenvolvimento e testes, é essencial ter um banco de dados pré-populado com dados iniciais. Isso facilita a criação, teste e validação das funcionalidades da aplicação sem a necessidade de inserir dados manualmente toda vez. Neste artigo, vamos explorar como criar e executar um seed para pré-popular um banco de dados usando Prisma.

    O que é um Seed?

    Um seed é um script que insere dados predefinidos no banco de dados. Esses dados iniciais são úteis para desenvolvedores, pois permitem testar funcionalidades da API e garantir que não estão trabalhando com um banco de dados vazio. Com dados iniciais, é possível simular cenários reais de uso e verificar o comportamento da aplicação de forma mais eficaz.

    Passo a Passo para Criar e Executar um Seed com Prisma

    1. Criar o Arquivo de Seed

    Primeiramente, crie um arquivo seed.ts dentro do diretório prisma (ou em qualquer outro local de sua preferência). Este arquivo conterá a lógica necessária para inserir dados no banco de dados.

    2. Estrutura Básica do Seed

    No arquivo seed.ts, configure uma função que será responsável por inserir os dados iniciais e garantir que a conexão com o banco de dados seja encerrada corretamente após a execução.
    import { PrismaClient } from '@prisma/client'; const prisma = new PrismaClient(); async function seed() { // Código para inserir dados iniciais console.log('Database seeded'); await prisma.$disconnect(); } seed().catch(e => { console.error(e); prisma.$disconnect(); process.exit(1); });

    3. Inserindo Dados Iniciais

    Dentro da função seed, utilize o Prisma para criar registros no banco de dados. Aqui está um exemplo de como criar um evento:
    async function seed() { await prisma.event.create({ data: { id: 'unique-id-12345', // ID fixo para o evento title: 'Unite Summit', slug: 'unite-summit', details: 'Evento para apaixonados por código', maximumAttendees: 120 } }); console.log('Database seeded'); await prisma.$disconnect(); }
    Usar um ID fixo garante que o evento criado sempre terá o mesmo ID, facilitando a referência a esse evento em outras partes da aplicação.

    4. Configurar Cascade Delete (Opcional)

    Se o seu modelo de dados possui relacionamentos, é importante configurar cascading deletes para evitar erros ao deletar registros relacionados. No arquivo schema.prisma, configure as relações para que os registros filhos sejam deletados automaticamente quando o registro pai for deletado.
    model Event { id String @id @default(uuid()) title String slug String details String maximumAttendees Int participants Participant[] @relation("EventParticipants", onDelete: Cascade) } model Participant { id String @id @default(uuid()) eventId String event Event @relation(fields: [eventId], references: [id], onDelete: Cascade) }
    Após ajustar o modelo, execute uma migração para aplicar as mudanças:
    npx prisma migrate dev --name add-cascades

    5. Adicionar Script de Seed no package.json

    Para facilitar a execução do seed, adicione um comando de seed no arquivo package.json:
    "prisma": { "seed": "tsx prisma/seed.ts" }

    6. Executar o Seed

    Execute o seed usando o comando:
    npx prisma db seed
    No terminal, você verá as queries executadas e uma mensagem confirmando que o banco de dados foi seeded com sucesso.

    7. Verificar os Dados

    Para verificar se os dados foram inseridos corretamente, você pode usar o Prisma Studio:
    npx prisma studio
    Isso abrirá uma interface gráfica onde você poderá visualizar os registros no banco de dados.
     
    Utilizar seeds é uma prática recomendada para garantir que seu ambiente de desenvolvimento tenha dados consistentes para teste. A configuração de cascading deletes deve ser usada com cuidado, considerando o impacto na performance e nas regras de negócio do seu sistema. A seguir, temos o exemplo completo do arquivo seed.ts e do modelo schema.prisma com as configurações necessárias.

    Exemplo Completo do Arquivo seed.ts:

    import { PrismaClient } from '@prisma/client'; const prisma = new PrismaClient(); async function seed() { await prisma.event.create({ data: { id: 'unique-id-12345', title: 'Unite Summit', slug: 'unite-summit', details: 'Evento para apaixonados por código', maximumAttendees: 120 } }); console.log('Database seeded'); await prisma.$disconnect(); } seed().catch(e => { console.error(e); prisma.$disconnect(); process.exit(1); });

    Exemplo Completo do Arquivo schema.prisma com Cascading Deletes:

    model Event { id String @id @default(uuid()) title String slug String details String maximumAttendees Int participants Participant[] @relation("EventParticipants", onDelete: Cascade) } model Participant { id String @id @default(uuid()) eventId String event Event @relation(fields: [eventId], references: [id], onDelete: Cascade) }

    Comando para Executar o Seed:

    npx prisma db seed
    Essa abordagem garante que você tenha um banco de dados inicializado com dados úteis para desenvolvimento e testes, melhorando a eficiência do processo de desenvolvimento.
     
    Video preview

    Aprenda programação do zero e DE GRAÇA

    No Discover você vai descomplicar a programação, aprender a criar seu primeiro site com a mão na massa e iniciar sua transição de carreira.

    COMECE A ESTUDAR AGORA