Observação: Para fins didáticos vamos evitar esse comando, pois o código dos arquivos gerados é pouco legível e segue um padrão que dificulta a escrita de testes, mas para seu conhecimento, é possível gerar um model através do seguinte comando:
npx sequelize model:generate --name User.model --attributes fullName:string
Caso seja necessário explicitar o nome da tabela, pode-se fazer isso apenas acrescentando um outro parâmetro na função do model, o tableName, como você pode ver mais https://sequelize.org/docs/v6/core-concepts/model-basics/#providing-the-table-name-directly.
➡️ Agora vamos gerar um novo arquivo, com apenas o “esqueleto” de uma migration, usando o seguinte comando no terminal:
npx sequelize migration:generate --name create-user
- ➡️ Com a migration criada, basta executarmos o seguinte comando pelo CLI:
npx sequelize db:migrate
- ➡️ Caso queira reverter uma migration use o seguinte comando:
npx sequelize db:migrate:undo
- Então qual seria a forma correta de adicionar uma nova coluna em uma tabela já existente?
✔️ A resposta certa é: criar uma nova migration que permita alterar a tabela. Para isso, o objeto queryInterface possui funções específicas, que permitem criar uma nova coluna, remover uma coluna ou mesmo mudar o tipo de uma coluna que já existe. Nesse caso, o queryInterface abstrai o que a função ALTER TABLE faz no SQL. Deseja saber mais sobre ALTER TABLE e está com sua gestão de tempo em dia? Consulte o conteúdo adicional sobre o assunto.
Lembre-se que a tabela Users tem que estar criada para que os passos a seguir sejam executados com sucesso, portanto, se você reverteu a migration que a criava, refaça-a com o comando npx sequelize db:migrate.
➡️ Para criar uma outra migration para adicionar a coluna phoneNum na sua tabela Users, você deve criar um novo arquivo com o seguinte comando:
npx sequelize migration:generate --name add-column-phone-table-users
👀 De olho na dica: além de adicionar ou remover colunas, o objeto queryInterface também permite que você altere a estrutura de uma coluna, como seu tipo, valor default, entre outros detalhes, assim como o ALTER TABLE também permite. Você pode consultar esse link da documentação do Sequelize. https://sequelize.org/docs/v6/other-topics/query-interface/
Já aprendemos um jeito seguro de criar e recriar um banco de dados, e de acrescentar/excluir tabelas e colunas. Agora nós entraremos numa outra etapa!
Lembre-se que toda vez que executamos as migrations, nosso banco de dados é criado do zero, ou seja, sem dados dentro das tabelas.
- 📝Recapitulando: um seeder é usado para, basicamente, alimentar o banco de dados com informações necessárias para o funcionamento mínimo da aplicação.
As seeds seguem a mesma linha das migrations, portanto primeiramente vamos precisar executar a criação de uma nova seed pelo CLI:
npx sequelize seed:generate --name users
Para executar a seed, basta rodarmos o comando abaixo:
npx sequelize db:seed:all
Para reverter o seed, use o seguinte comando:
npx sequelize db:seed:undo:all