exports.up = async function(knex) { await knex.schema.createTable('feeds', (table) => { table.increments('id'); table.integer('user_id') .notNullable() .references('id') .inTable('users') .onDelete('cascade'); table.string('name') .notNullable(); table.string('slug') .notNullable(); table.boolean('public'); table.boolean('primary'); table.text('comment'); table.json('meta'); table.datetime('created_at') .notNullable() .defaultTo(knex.fn.now()); }); await knex.schema.createTable('feeds_entities', (table) => { table.increments('id'); table.integer('feed_id') .notNullable() .references('id') .inTable('feeds') .onDelete('cascade'); table.integer('entity_id') .notNullable() .references('id') .inTable('entities') .onDelete('cascade'); table.text('comment'); table.datetime('created_at') .notNullable() .defaultTo(knex.fn.now()); }); await knex.schema.createTable('feeds_actors', (table) => { table.increments('id'); table.integer('feed_id') .notNullable() .references('id') .inTable('feeds') .onDelete('cascade'); table.integer('actor_id') .notNullable() .references('id') .inTable('actors') .onDelete('cascade'); table.text('comment'); table.datetime('created_at') .notNullable() .defaultTo(knex.fn.now()); }); await knex.schema.createTable('feeds_tags', (table) => { table.increments('id'); table.integer('feed_id') .notNullable() .references('id') .inTable('feeds') .onDelete('cascade'); table.integer('tag_id') .notNullable() .references('id') .inTable('tags') .onDelete('cascade'); table.text('comment'); table.datetime('created_at') .notNullable() .defaultTo(knex.fn.now()); }); }; exports.down = async function(knex) { await knex.schema.dropTable('feeds_tags'); await knex.schema.dropTable('feeds_actors'); await knex.schema.dropTable('feeds_entities'); await knex.schema.dropTable('feeds'); };