Entendendo o Fluxo de Trabalho do Prisma Utilizando Migrations

RMAG news

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 no schema.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 campo birthdate na tabela User.

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.

Please follow and like us:
Pin Share