forked from DebaucheryLibrarian/traxxx
				
			
		
			
				
	
	
		
			47 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
| exports.up = async (knex) => {
 | |
| 	await knex.schema.alterTable('actors_social', (table) => {
 | |
| 		table.dropUnique(['url', 'actor_id', 'profile_id']);
 | |
| 		table.dropColumn('profile_id');
 | |
| 
 | |
| 		table.string('handle');
 | |
| 
 | |
| 		table.boolean('is_broken')
 | |
| 			.notNullable()
 | |
| 			.defaultTo(false);
 | |
| 
 | |
| 		table.datetime('pinged_at');
 | |
| 		table.datetime('verified_at');
 | |
| 
 | |
| 		table.unique(['actor_id', 'platform', 'handle']);
 | |
| 		table.unique(['actor_id', 'url']);
 | |
| 	});
 | |
| 
 | |
| 	await knex.raw('ALTER TABLE actors_social ADD CONSTRAINT socials_url_or_handle CHECK (num_nulls(handle, url) = 1);');
 | |
| 	await knex.raw('ALTER TABLE actors_social ADD CONSTRAINT socials_handle_and_platform CHECK (num_nulls(platform, handle) = 2 or num_nulls(platform, handle) = 0);');
 | |
| 
 | |
| 	await knex.schema.renameTable('actors_social', 'actors_socials');
 | |
| };
 | |
| 
 | |
| exports.down = async (knex) => {
 | |
| 	await knex.raw('ALTER TABLE actors_socials DROP CONSTRAINT socials_url_or_handle;');
 | |
| 	await knex.raw('ALTER TABLE actors_socials DROP CONSTRAINT socials_handle_and_platform;');
 | |
| 
 | |
| 	await knex.schema.renameTable('actors_socials', 'actors_social');
 | |
| 
 | |
| 	await knex.schema.alterTable('actors_social', (table) => {
 | |
| 		table.dropUnique(['actor_id', 'platform', 'handle']);
 | |
| 		table.dropUnique(['actor_id', 'url']);
 | |
| 
 | |
| 		table.integer('profile_id')
 | |
| 			.references('id')
 | |
| 			.inTable('actors_profiles');
 | |
| 
 | |
| 		table.dropColumn('handle');
 | |
| 		table.dropColumn('verified_at');
 | |
| 		table.dropColumn('pinged_at');
 | |
| 		table.dropColumn('is_broken');
 | |
| 
 | |
| 		table.unique(['url', 'actor_id', 'profile_id']);
 | |
| 	});
 | |
| };
 |