Improved socials table.
This commit is contained in:
@@ -3,32 +3,43 @@ exports.up = async (knex) => {
|
||||
table.dropUnique(['url', 'actor_id', 'profile_id']);
|
||||
table.dropColumn('profile_id');
|
||||
|
||||
table.string('username');
|
||||
table.string('handle');
|
||||
|
||||
table.unique(['actor_id', 'platform', 'username']);
|
||||
table.unique(['actor_id', 'url']);
|
||||
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 actors_url_or_username CHECK (num_nulls(username, url) = 1);');
|
||||
await knex.raw('ALTER TABLE actors_social ADD CONSTRAINT actors_username_and_platform CHECK (num_nulls(platform, username) = 2 or num_nulls(platform, username) = 0);');
|
||||
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_social DROP CONSTRAINT actors_url_or_username;');
|
||||
await knex.raw('ALTER TABLE actors_social DROP CONSTRAINT actors_username_and_platform;');
|
||||
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', 'username']);
|
||||
table.dropUnique(['actor_id', 'platform', 'handle']);
|
||||
table.dropUnique(['actor_id', 'url']);
|
||||
|
||||
table.integer('profile_id')
|
||||
.references('id')
|
||||
.inTable('actors_profiles');
|
||||
|
||||
table.dropColumn('username');
|
||||
table.dropColumn('handle');
|
||||
table.dropColumn('verified_at');
|
||||
table.dropColumn('pinged_at');
|
||||
table.dropColumn('is_broken');
|
||||
|
||||
table.unique(['url', 'actor_id', 'profile_id']);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user