Cursos / Informática para Internet / Plataformas de aplicações Web / Aula
Vamos repetir o processo acima e criar as tabelas restantes com uma migration para cada.
Crie as migrations restantes assim:
npx knex migrate:make create_clients
npx knex migrate:make create_categories
npx knex migrate:make create_products
npx knex migrate:make create_products
npx knex migrate:make create_items
Abaixo segue o conteúdo de cada arquivo de migração criado (menos o de employees, que já foi criado anteriormente). Os timestamps dos nomes dos arquivos vão variar no seu projeto):
migrations/20210820015100_create_clients.js
exports.up = function(knex) {
return knex.schema.createTable('clients', function (table) {
table.increments('id');
table.string('email');
table.string('password');
table.string('name');
})
};
exports.down = function(knex) {
return knex.schema.dropTable('clients');
};
migrations/20210820015127_create_categories.js
exports.up = function(knex) {
return knex.schema.createTable('categories', function (table) {
table.increments('id');
table.string('name');
})
};
exports.down = function(knex) {
return knex.schema.dropTable('categories');
};
migrations/20210820015133_create_products.js
exports.up = function(knex) {
return knex.schema.createTable('products', function (table) {
table.increments('id');
table.string('name');
table.text('description');
table.string('photo', 2000);
table.decimal('price', 10, 2);
table.integer('category_id').unsigned().references('categories.id');
})
};
exports.down = function(knex) {
return knex.schema.dropTable('products');
};
migrations/20210820015140_create_sales.js
exports.up = function(knex) {
return knex.schema.createTable('sales', function (table) {
table.increments('id');
table.integer('client_id').notNullable().unsigned().references('clients.id');
table.integer('employee_id').nullable().unsigned().references('employees.id');
})
};
exports.down = function(knex) {
return knex.schema.dropTable('sales');
};
migrations/20210820015146_create_items.js
exports.up = function(knex) {
return knex.schema.createTable('items', function (table) {
table.increments('id');
table.integer('sale_id').notNullable().unsigned().references('sales.id');
table.integer('product_id').notNullable().unsigned().references('products.id');
})
};
exports.down = function(knex) {
return knex.schema.dropTable('items');
};
Para executar as migrações que acabou de criar você pode executar o comando 'npx knex migrate:up' várias vezes (uma para cada migration) ou pode também rodar todas as restantes de uma vez com um só comando:
npx knex migrate:latest
Conferindo se as tabelas estão no banco de dados:
Sucesso. Criamos com o knex.js todas as tabelas do banco de dados utilizando migrations.
Como você notou nas migrations, existem comandos específicos para se criar colunas com as configurações desejadas, podendo ser informado o seu tipo, se são chaves estrangeiras, se podem ou não receber valores nulos, etc.
Versão 5.3 - Todos os Direitos reservados