Set complex goals
November 1, 2017
Serve data to clients from a server
November 10, 2017
 

Manage a database with migrations and seeds

 

Thursday, November 9th, 2017

Given some data and an ERD, write the migrations and seeds to execute it.

For this example, I will use my Galvanize Brews

https://github.com/prdesignwork/galvanize-brews

We were given this ERD to start

So to start we had to setup the Migrations for both Breweries and Beers using Knex.

exports.up = function(knex, Promise) {
return knex.schema.createTable(“brewery”, function(brewery){
brewery.increments(“id”);
brewery.string(“name”);
brewery.string(“city”);
brewery.string(“state”);
});
};

exports.down = function(knex, Promise) {
return knex.schema.dropTable(“brewery”);
};

and

exports.up = function(knex, Promise) {
return knex.schema.createTable(“beer”, function(beer){
beer.increments(“id”);
beer.string(“name”);
beer.float(“abv”);
beer.integer(“brewery_id”).references(“brewery”, “id”);
});
};

exports.down = function(knex, Promise) {
return knex.schema.dropTable(“beer”);
};

 

Then we setup the seeds for both brewery and beer

exports.seed = function(knex, Promise) {
return Promise.join(
// Deletes ALL existing entries
knex(‘brewery’).del()
.then(function() {
// Inserts seed entries
return knex(‘brewery’).insert([
{id: 1, name: ‘Comrade’, city: ‘Denver’, state: ‘CO’},
{id: 2, name: ‘Ska’, city: ‘Durango’, state: ‘CO’}
])
})
)
};

and

exports.seed = function(knex, Promise) {
return Promise.join(
// Deletes ALL existing entries
knex(‘beer’).del()
.then(function() {
// Inserts seed entries
return knex(‘beer’).insert([
{id: 1, name: ‘Yellow Fever’, abv: 5.0, brewery_id: 1},
{id: 2, name: ‘Redcon’, abv: 5.7, brewery_id: 1},
{id: 3, name: ‘True Blonde Ale’, abv: 5.0, brewery_id: 2},
{id: 4, name: ‘Modus Hoperandi IPA’, abv: 6.8, brewery_id: 2}
])
})
);
};

It is best practice to not include ids in seed data, since it auto-populates those ids.