Prisma é um ORM (Object-Relational Mapping) moderno que facilita a interação com bancos de dados em aplicações Node.js e TypeScript. Uma das funcionalidades mais importantes do Prisma é o sistema de migrações, que permite manter o esquema do banco de dados sincronizado com o modelo de dados da aplicação. Neste post, vamos explorar o fluxo de trabalho do Prisma utilizando migrations.
O que são Migrations?
Migrations são um método para controlar e aplicar alterações no esquema do banco de dados de forma sistemática e versionada. Elas permitem que você defina mudanças estruturais no banco de dados, como criar ou alterar tabelas, de maneira incremental e reversível.
Fluxo de Trabalho do Prisma com Migrations
O fluxo de trabalho típico com migrations no Prisma envolve os seguintes passos:
- Instalação e Configuração Inicial
- Definição do Esquema
- Criação de uma Migration
- Aplicação da Migration
- Gerenciamento de Migrations
Passo 1: Instalação e Configuração Inicial
Primeiro, precisamos instalar o Prisma no projeto e inicializá-lo:
npm install @prisma/client
npx prisma init
Este comando cria um diretório prisma
contendo um arquivo schema.prisma
, onde definimos nosso modelo de dados.
Passo 2: Definição do Esquema
No arquivo schema.prisma
, definimos os modelos que representam as tabelas do banco de dados. Por exemplo, vamos definir um modelo User
:
model User { id Int @id @default(autoincrement()) email String @unique name String?
}
Aqui, estamos definindo uma tabela User
com colunas id
, email
e name
.
Passo 3: Criação de uma Migration
Depois de definir ou alterar o esquema, criamos uma migration para refletir essas mudanças no banco de dados:
npx prisma migrate dev --name init
O comando migrate dev
cria uma nova migration e aplica as mudanças ao banco de dados. O parâmetro --name
permite dar um nome descritivo à migration, como init
no exemplo acima.
Passo 4: Aplicação da Migration
As migrations são aplicadas automaticamente ao banco de dados quando usamos o comando migrate dev
. Isso garante que o banco de dados esteja sempre em sincronia com o modelo de dados definido no schema.prisma
.
Se você quiser aplicar migrations em um ambiente de produção, utilize o comando:
npx prisma migrate deploy
Este comando aplica todas as migrations pendentes no banco de dados de produção.
Passo 5: Gerenciamento de Migrations
Prisma mantém um histórico de todas as migrations aplicadas no banco de dados. Isso é útil para rastrear mudanças e reverter migrations, se necessário. Para ver o histórico de migrations, você pode usar:
npx prisma migrate status
Este comando mostra o estado atual das migrations, incluindo quais migrations foram aplicadas e quais estão pendentes.
Exemplo Prático
Vamos ver um exemplo prático de como adicionar um novo campo ao modelo User
e criar uma migration para essa mudança.
Adicionar o campo ao modelo
User
noschema.prisma
:model User { id Int @id @default(autoincrement()) email String @unique name String? birthdate DateTime? }
Criar uma nova migration:
npx prisma migrate dev --name add-birthdate-to-user
Aplicar a migration:
O comando
migrate dev
já aplica a migration ao banco de dados. Agora, o banco de dados terá o novo campobirthdate
na tabelaUser
.Verificar o estado das migrations:
npx prisma migrate status
Este comando mostrará que a migration
add-birthdate-to-user
foi aplicada com sucesso.
Conclusão
O fluxo de trabalho do Prisma utilizando migrations é uma maneira eficiente e segura de gerenciar mudanças no esquema do banco de dados. Através de uma sequência clara de passos – definir o esquema, criar migrations, aplicar mudanças e gerenciar o histórico de migrations – é possível manter o banco de dados sincronizado com o modelo de dados da aplicação, facilitando o desenvolvimento e a manutenção do software.
Com Prisma, você não apenas simplifica o gerenciamento do banco de dados, mas também ganha uma poderosa ferramenta para garantir que todas as mudanças sejam rastreáveis e reversíveis, contribuindo para um processo de desenvolvimento mais robusto e ágil.
Discover more from Coursity
Subscribe to get the latest posts sent to your email.