SlideShare uma empresa Scribd logo
1 de 10
Knex Migrations
Ferramenta para controle de alterações na estrutura da base de dados.
Migrations File ([timestamp]_filename.js)
exports.up = function(knex, Promise) {
return knex.schema.createTable('migrationsTest', function(t)
{
t.increments('id').unsigned().primary().notNull();
t.text('description').nullable();
});
};
exports.down = function(knex, Promise) {
return knex.schema.dropTable('migrationsTest');
};
exports.up = function(knex, Promise) {
return knex.raw(`
alter table exemplo
add column descricao varchar;
`);
}
exports.down = function(knex, Promise)
{
return knex.raw(`
alter table exemplo
drop column descricao;
`);
}
Knex Config File (knexfile.js)
module.exports = {
local: {
client: 'mysql2',
connection: {
host: config.db_hostname,
database: config.db_defaultSchema,
user: config.db_user,
password: config.db_password,
},
migrations: {
tableName: 'migrations',
},
},
};
Tabela Migrations
Guarda quais scripts foram rodados
Quando foram rodados
Em qual lote foram rodados
Knex Migrations Api
Knex init - Cria o arquivo knexfile.js
Knex migrate:make filename - Cria o arquivo de migração com a timestamp e
nome informado.
Knex migrate:latest --env local - Roda a função up dos arquivos de migração
pendentes.
Knex migrate:rollback --env local - Roda a função down dos arquivos que foram
rodados no último comando de update.
Knex Migrate Package
Knex-migrate pending - lista todas as migrações pendentes
knex -migrate list - lista todas as migrações executadas
Knex-migrate up - executa todas as migrações pendentes
Knex-migrate down - desfaz a última migração
Knex-migrate rollback - desfaz o ultimo lote de migrações
Knex-migrate redo - desfaz o último lote de migrações e executa todas as
migrações novamente
Knex Migrate Options
--to, -t [filename] - executa as migrações até o arquivo informado
--from, -f [filename] - executa as migrações a partir do arquivo informado
--only, -o [filename] - executa apenas a migração do arquivo informado
--step, -s [number] - executa apenas o número informado de migrações
pendentes
Pontos Positivos
Reduz possíveis falhas humanas
Automatiza o processo de atualização de base
Facilita o teste de scripts de migrações
Cuidados
Comandos DDL ( CREATE, ALTER, DROP) não são reversíveis (mysql).
Pergunta
s?

Mais conteúdo relacionado

Semelhante a Knex Migrations: Controle de alterações na estrutura da base de dados

Arquiteturas Java Pragmáticas para usar Big Data na Nuvem
Arquiteturas Java Pragmáticas para usar Big Data na NuvemArquiteturas Java Pragmáticas para usar Big Data na Nuvem
Arquiteturas Java Pragmáticas para usar Big Data na NuvemTail Target
 
Testes em Aplicações Web com Cactus
Testes em Aplicações Web com CactusTestes em Aplicações Web com Cactus
Testes em Aplicações Web com CactusDenis L Presciliano
 
Desvendando as ferramentas e serviços para o desenvolvedor Android
Desvendando as ferramentas e serviços para o desenvolvedor AndroidDesvendando as ferramentas e serviços para o desenvolvedor Android
Desvendando as ferramentas e serviços para o desenvolvedor Androidjoaobmonteiro
 
Elasticidade e engenharia de banco de dados para alta performance - Rubens G...
Elasticidade e engenharia de banco de dados para alta performance  - Rubens G...Elasticidade e engenharia de banco de dados para alta performance  - Rubens G...
Elasticidade e engenharia de banco de dados para alta performance - Rubens G...iMasters
 
Windows Azure 5/8 - Recursos adicionais do Windows Azure
Windows Azure 5/8 - Recursos adicionais do Windows AzureWindows Azure 5/8 - Recursos adicionais do Windows Azure
Windows Azure 5/8 - Recursos adicionais do Windows AzureVitor Ciaramella
 
Curso matlab 6 especiais
Curso matlab 6 especiaisCurso matlab 6 especiais
Curso matlab 6 especiaisJosh Santos
 
One Language to Rule Them All: TypeScript
One Language to Rule Them All: TypeScriptOne Language to Rule Them All: TypeScript
One Language to Rule Them All: TypeScriptLoiane Groner
 

Semelhante a Knex Migrations: Controle de alterações na estrutura da base de dados (11)

App scala
App scalaApp scala
App scala
 
Arquiteturas Java Pragmáticas para usar Big Data na Nuvem
Arquiteturas Java Pragmáticas para usar Big Data na NuvemArquiteturas Java Pragmáticas para usar Big Data na Nuvem
Arquiteturas Java Pragmáticas para usar Big Data na Nuvem
 
Comtec 2012 - C# Async
Comtec 2012 - C# AsyncComtec 2012 - C# Async
Comtec 2012 - C# Async
 
Testes em Aplicações Web com Cactus
Testes em Aplicações Web com CactusTestes em Aplicações Web com Cactus
Testes em Aplicações Web com Cactus
 
Desvendando as ferramentas e serviços para o desenvolvedor Android
Desvendando as ferramentas e serviços para o desenvolvedor AndroidDesvendando as ferramentas e serviços para o desenvolvedor Android
Desvendando as ferramentas e serviços para o desenvolvedor Android
 
Elasticidade e engenharia de banco de dados para alta performance - Rubens G...
Elasticidade e engenharia de banco de dados para alta performance  - Rubens G...Elasticidade e engenharia de banco de dados para alta performance  - Rubens G...
Elasticidade e engenharia de banco de dados para alta performance - Rubens G...
 
Curso de Node JS Básico
Curso de Node JS BásicoCurso de Node JS Básico
Curso de Node JS Básico
 
Palestra cbq
Palestra cbqPalestra cbq
Palestra cbq
 
Windows Azure 5/8 - Recursos adicionais do Windows Azure
Windows Azure 5/8 - Recursos adicionais do Windows AzureWindows Azure 5/8 - Recursos adicionais do Windows Azure
Windows Azure 5/8 - Recursos adicionais do Windows Azure
 
Curso matlab 6 especiais
Curso matlab 6 especiaisCurso matlab 6 especiais
Curso matlab 6 especiais
 
One Language to Rule Them All: TypeScript
One Language to Rule Them All: TypeScriptOne Language to Rule Them All: TypeScript
One Language to Rule Them All: TypeScript
 

Knex Migrations: Controle de alterações na estrutura da base de dados

  • 1. Knex Migrations Ferramenta para controle de alterações na estrutura da base de dados.
  • 2. Migrations File ([timestamp]_filename.js) exports.up = function(knex, Promise) { return knex.schema.createTable('migrationsTest', function(t) { t.increments('id').unsigned().primary().notNull(); t.text('description').nullable(); }); }; exports.down = function(knex, Promise) { return knex.schema.dropTable('migrationsTest'); }; exports.up = function(knex, Promise) { return knex.raw(` alter table exemplo add column descricao varchar; `); } exports.down = function(knex, Promise) { return knex.raw(` alter table exemplo drop column descricao; `); }
  • 3. Knex Config File (knexfile.js) module.exports = { local: { client: 'mysql2', connection: { host: config.db_hostname, database: config.db_defaultSchema, user: config.db_user, password: config.db_password, }, migrations: { tableName: 'migrations', }, }, };
  • 4. Tabela Migrations Guarda quais scripts foram rodados Quando foram rodados Em qual lote foram rodados
  • 5. Knex Migrations Api Knex init - Cria o arquivo knexfile.js Knex migrate:make filename - Cria o arquivo de migração com a timestamp e nome informado. Knex migrate:latest --env local - Roda a função up dos arquivos de migração pendentes. Knex migrate:rollback --env local - Roda a função down dos arquivos que foram rodados no último comando de update.
  • 6. Knex Migrate Package Knex-migrate pending - lista todas as migrações pendentes knex -migrate list - lista todas as migrações executadas Knex-migrate up - executa todas as migrações pendentes Knex-migrate down - desfaz a última migração Knex-migrate rollback - desfaz o ultimo lote de migrações Knex-migrate redo - desfaz o último lote de migrações e executa todas as migrações novamente
  • 7. Knex Migrate Options --to, -t [filename] - executa as migrações até o arquivo informado --from, -f [filename] - executa as migrações a partir do arquivo informado --only, -o [filename] - executa apenas a migração do arquivo informado --step, -s [number] - executa apenas o número informado de migrações pendentes
  • 8. Pontos Positivos Reduz possíveis falhas humanas Automatiza o processo de atualização de base Facilita o teste de scripts de migrações
  • 9. Cuidados Comandos DDL ( CREATE, ALTER, DROP) não são reversíveis (mysql).