exports.up = async function(knex) { await knex.schema.createTable('sync', (table) => { table.increments('id'); table.string('domain'); table.specificType('item_ids', 'integer array'); table.text('comment'); table.datetime('created_at') .defaultTo(knex.fn.now()); }); await knex('users_roles') .update('abilities', JSON.stringify([ { subject: 'scene', action: 'create' }, { subject: 'scene', action: 'update' }, { subject: 'scene', action: 'delete' }, { subject: 'actor', action: 'create' }, { subject: 'actor', action: 'update' }, { subject: 'actor', action: 'delete' }, { subject: 'actor', action: 'merge' }, { subject: 'sync' }, { subject: 'plainUrls' }, ])) .where('role', 'admin'); await knex.raw(` DROP TABLE IF EXISTS releases_search CASCADE; DROP TABLE IF EXISTS movies_search CASCADE; DROP TABLE IF EXISTS series_search CASCADE; DROP TABLE IF EXISTS releases_search_results CASCADE; DROP TABLE IF EXISTS movies_search_results CASCADE; `); }; exports.down = async function(knex) { await knex.schema.dropTable('sync'); await knex('users_roles') .update('abilities', JSON.stringify([ { subject: 'scene', action: 'create' }, { subject: 'scene', action: 'update' }, { subject: 'scene', action: 'delete' }, { subject: 'actor', action: 'create' }, { subject: 'actor', action: 'update' }, { subject: 'actor', action: 'delete' }, { subject: 'actor', action: 'merge' }, { plainUrls: true }, ])) .where('role', 'admin'); await knex.schema.createTable('releases_search', (table) => { table.integer('release_id', 16) .references('id') .inTable('releases') .onDelete('cascade'); }); await knex.schema.createTable('movies_search', (table) => { table.integer('movie_id', 16) .references('id') .inTable('movies') .onDelete('cascade'); }); await knex.schema.createTable('series_search', (table) => { table.integer('serie_id', 16) .references('id') .inTable('series') .onDelete('cascade'); }); await knex.raw(` ALTER TABLE releases_search ADD COLUMN document tsvector; ALTER TABLE movies_search ADD COLUMN document tsvector; ALTER TABLE series_search ADD COLUMN document tsvector; CREATE UNIQUE INDEX releases_search_unique ON releases_search (release_id); CREATE UNIQUE INDEX movies_search_unique ON movies_search (movie_id); CREATE INDEX releases_search_index ON releases_search USING GIN (document); CREATE INDEX movies_search_index ON movies_search USING GIN (document); CREATE UNIQUE INDEX series_search_unique ON series_search (serie_id); CREATE INDEX series_search_index ON series_search USING GIN (document); `); };