forked from DebaucheryLibrarian/traxxx
				
			
		
			
				
	
	
		
			66 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
			
		
		
	
	
			66 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
| const config = require('config');
 | |
| 
 | |
| exports.up = async (knex) => {
 | |
| 	await knex.schema.alterTable('entities', (table) => {
 | |
| 		// internal options, as opposed to parameters for scraper options
 | |
| 		table.json('options');
 | |
| 	});
 | |
| 
 | |
| 	await knex.schema.alterTable('releases', (table) => {
 | |
| 		table.dropForeign('entity_id');
 | |
| 
 | |
| 		table.foreign('entity_id')
 | |
| 			.references('id')
 | |
| 			.inTable('entities')
 | |
| 			.onDelete('cascade');
 | |
| 	});
 | |
| 
 | |
| 	await knex.schema.alterTable('releases_caps', (table) => {
 | |
| 		table.unique(['release_id', 'media_id']);
 | |
| 	});
 | |
| 
 | |
| 	await knex.schema.createTable('movies_tags', (table) => {
 | |
| 		table.integer('tag_id')
 | |
| 			.references('id')
 | |
| 			.inTable('tags');
 | |
| 
 | |
| 		table.integer('movie_id')
 | |
| 			.notNullable()
 | |
| 			.references('id')
 | |
| 			.inTable('movies')
 | |
| 			.onDelete('cascade');
 | |
| 
 | |
| 		table.text('original_tag');
 | |
| 
 | |
| 		table.text('source')
 | |
| 			.defaultTo('scraper');
 | |
| 
 | |
| 		table.unique(['tag_id', 'movie_id']);
 | |
| 	});
 | |
| 
 | |
| 	await knex.raw('GRANT ALL ON ALL TABLES IN SCHEMA public TO :visitor;', {
 | |
| 		visitor: knex.raw(config.database.query.user),
 | |
| 	});
 | |
| };
 | |
| 
 | |
| exports.down = async (knex) => {
 | |
| 	await knex.schema.alterTable('entities', (table) => {
 | |
| 		table.dropColumn('options');
 | |
| 	});
 | |
| 
 | |
| 	await knex.schema.alterTable('releases', (table) => {
 | |
| 		table.dropForeign('entity_id');
 | |
| 
 | |
| 		table.foreign('entity_id')
 | |
| 			.references('id')
 | |
| 			.inTable('entities')
 | |
| 			.onDelete('no action');
 | |
| 	});
 | |
| 
 | |
| 	await knex.schema.alterTable('releases_caps', (table) => {
 | |
| 		table.dropUnique(['release_id', 'media_id']);
 | |
| 	});
 | |
| 
 | |
| 	await knex.schema.dropTable('movies_tags');
 | |
| };
 |