/**
 * @param { import("knex").Knex } knex
 * @returns { Promise<void> }
 */
exports.up = function(knex) {
  return knex.schema.hasTable('invites').then(function(exists) {
    if (!exists) {
      return knex.schema.createTable('invites', (table) => {
        table.increments('id').primary();
        table.integer('user_id').unsigned().references('id').inTable('users');
        table.string('token').notNullable();
        table.datetime('created').defaultTo(knex.fn.now());
        table.datetime('expires').notNullable();
      });
    }
  });
};

/**
 * @param { import("knex").Knex } knex
 * @returns { Promise<void> }
 */
exports.down = function(knex) {
  return knex.schema.hasTable('invites').then(function(exists) {
    if (exists) {
      return knex.schema.dropTable('invites');
    }
  });
};
