forked from DebaucheryLibrarian/traxxx
				
			
		
			
				
	
	
		
			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');
 | |
| };
 |