exports.up = function(knex) { return knex.schema .createTable('users', tbl => { tbl .increments(); tbl .string('email') .notNullable() .unique(); tbl .string('username') .notNullable() .unique(); tbl .string('password') .notNullable(); }) .createTable('sessions', tbl => { tbl .increments(); tbl .integer('user_id') .unsigned() .notNullable() .references('users.id') .onUpdate('CASCADE') .onDelete('CASCADE'); tbl .datetime('bed_time') .notNullable(); tbl .datetime('wake_time'); tbl .integer('bed_tiredness') .unsigned(); tbl .integer('wake_mood') .unsigned(); }) .createTable('dailyAverages', tbl => { tbl .increments(); tbl .integer('session_user') .unsigned() .notNullable() .references('sessions.user_id') .onUpdate('CASCADE') .onDelete('CASCADE'); tbl .datetime('session_date') .notNullable() .references('sessions.wake_time') .onUpdate('CASCADE') .onDelete('CASCADE'); tbl .integer('sleep_duration') .unsigned(); tbl .float('average_mood'); }) }; exports.down = function(knex) { return knex.schema .dropTableIfExists('dailyAverages') .dropTableIfExists('sessions') .dropTableIfExists('users'); };