101 lines
2.0 KiB
JavaScript
101 lines
2.0 KiB
JavaScript
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');
|
|
};
|