Como criar migrations no Sequelize?
Migrations no Sequelize são usadas para versionar o banco de dados, permitindo que as alterações no esquema do banco sejam feitas de maneira controlada e segura. Elas ajudam a manter a consistência do banco entre diferentes ambientes de desenvolvimento, testes e produção.
1. Instalando Sequelize CLI
Primeiro, instale a ferramenta Sequelize CLI que irá facilitar a criação de migrations:
npm install --save-dev sequelize-cli
2. Configurando o Sequelize CLI
Crie um arquivo de configuração chamado config.json
dentro de uma pasta config
para informar o Sequelize sobre os parâmetros de conexão ao banco de dados:
{
"development": {
"username": "root",
"password": null,
"database": "meubanco",
"host": "127.0.0.1",
"dialect": "mysql"
}
}
3. Criando uma migration
Para criar uma migration, utilize o seguinte comando no terminal:
npx sequelize-cli migration:generate --name create-usuarios
Isso criará um arquivo de migration dentro da pasta migrations
. O arquivo terá um nome semelhante a xxxxxx-create-usuarios.js
, onde xxxxxx
é um timestamp.
Dentro deste arquivo de migration, você pode definir as operações que serão realizadas no banco de dados. Exemplo de criação de uma tabela usuarios
:
'use strict';
module.exports = {
up: async (queryInterface, Sequelize) => {
await queryInterface.createTable('Usuarios', {
id: {
type: Sequelize.INTEGER,
allowNull: false,
autoIncrement: true,
primaryKey: true,
},
nome: {
type: Sequelize.STRING,
allowNull: false,
},
email: {
type: Sequelize.STRING,
allowNull: false,
unique: true,
},
createdAt: {
type: Sequelize.DATE,
allowNull: false,
},
updatedAt: {
type: Sequelize.DATE,
allowNull: false,
}
});
},
down: async (queryInterface, Sequelize) => {
await queryInterface.dropTable('Usuarios');
}
};
4. Executando migrations
Para aplicar as migrations no banco de dados, execute o seguinte comando:
npx sequelize-cli db:migrate
Esse comando irá rodar todas as migrations pendentes e atualizar o banco de dados de acordo com as mudanças definidas.
5. Revertendo migrations
Se precisar desfazer uma migration, você pode reverter a última migration executada com:
npx sequelize-cli db:migrate:undo
Esse comando desfaz a última operação de migration aplicada no banco.
Conclusão
Com migrations, o Sequelize permite que você controle a versão do banco de dados e aplique alterações de forma organizada. Isso é fundamental para ambientes de desenvolvimento colaborativos e produção, garantindo que o banco de dados seja mantido de forma consistente.
Por que as migrations são essenciais para o controle de versões no banco de dados?
As migrations são fundamentais em qualquer projeto que envolva banco de dados, principalmente em aplicações que estão sendo desenvolvidas por uma equipe de pessoas. Elas garantem que todos os desenvolvedores aplicam as mesmas alterações no banco e evitam erros de inconsistência entre os ambientes de desenvolvimento, staging e produção.
O Sequelize, ao fornecer uma interface para gerenciar migrations, facilita o controle de versões de bancos de dados relacionais como MySQL, PostgreSQL e SQLite.
Algumas aplicações:
- Versionamento e controle de alterações no banco de dados
- Manutenção de esquemas de banco de dados em ambientes colaborativos
- Facilitação de migração de dados e estrutura de tabelas entre diferentes ambientes
- Gerenciamento de mudanças de esquema ao longo do tempo
Dicas para quem está começando
- Utilize o comando
sequelize-cli migration:generate
para criar migrations automaticamente. - Não se esqueça de definir a função
down
para desfazer alterações em caso de erro. - Use o versionamento de migrations para evitar conflitos no banco de dados durante o desenvolvimento.
- Tenha um banco de dados de teste para rodar suas migrations antes de aplicá-las em produção.
- Verifique se o nome das migrations segue um padrão claro para facilitar o rastreamento das mudanças.
Contribuições de Lucas Fernandes