88 lines
2.6 KiB
JavaScript
88 lines
2.6 KiB
JavaScript
exports.up = async function(knex) {
|
|
await knex.schema.createTable('queue', (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('queue');
|
|
|
|
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);
|
|
`);
|
|
};
|