43 lines
913 B
JavaScript
43 lines
913 B
JavaScript
const config = require('config');
|
|
|
|
exports.up = async (knex) => {
|
|
await knex.schema.alterTable('alerts', (table) => {
|
|
table.boolean('all')
|
|
.defaultTo(true);
|
|
});
|
|
|
|
await knex.schema.alterTable('alerts_entities', (table) => {
|
|
table.dropUnique('alert_id');
|
|
});
|
|
|
|
await knex.schema.createTable('alerts_matches', (table) => {
|
|
table.increments('id');
|
|
|
|
table.integer('alert_id')
|
|
.references('id')
|
|
.inTable('alerts')
|
|
.onDelete('cascade');
|
|
|
|
table.string('property');
|
|
table.string('expression');
|
|
});
|
|
|
|
await knex.raw(`
|
|
GRANT SELECT ON alerts_matches TO :visitor;
|
|
`, {
|
|
visitor: knex.raw(config.database.query.user),
|
|
});
|
|
};
|
|
|
|
exports.down = async (knex) => {
|
|
await knex.schema.alterTable('alerts', (table) => {
|
|
table.dropColumn('all');
|
|
});
|
|
|
|
await knex.schema.alterTable('alerts_entities', (table) => {
|
|
table.unique('alert_id');
|
|
});
|
|
|
|
await knex.schema.dropTable('alerts_matches');
|
|
};
|