From 2c58dfe426fab2422597702bf4d33ce0fef6d4ea Mon Sep 17 00:00:00 2001 From: DebaucheryLibrarian Date: Sun, 3 Nov 2024 06:29:16 +0100 Subject: [PATCH] Restructured socials table. --- common | 2 +- migrations/20241103060644_socials.js | 35 ++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 migrations/20241103060644_socials.js diff --git a/common b/common index 1122b419..dc00c3d5 160000 --- a/common +++ b/common @@ -1 +1 @@ -Subproject commit 1122b4198f2c5bc27f9f4e3f3aedea6c81f09ba1 +Subproject commit dc00c3d58af2c23530b8b3cb6704f3860fdd7d0f diff --git a/migrations/20241103060644_socials.js b/migrations/20241103060644_socials.js new file mode 100644 index 00000000..c5fc92b8 --- /dev/null +++ b/migrations/20241103060644_socials.js @@ -0,0 +1,35 @@ +exports.up = async (knex) => { + await knex.schema.alterTable('actors_social', (table) => { + table.dropUnique(['url', 'actor_id', 'profile_id']); + table.dropColumn('profile_id'); + + table.string('username'); + + table.unique(['actor_id', 'platform', 'username']); + table.unique(['actor_id', 'url']); + + table.datetime('verified_at'); + }); + + 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);'); +}; + +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.schema.alterTable('actors_social', (table) => { + table.dropUnique(['actor_id', 'platform', 'username']); + table.dropUnique(['actor_id', 'url']); + + table.integer('profile_id') + .references('id') + .inTable('actors_profiles'); + + table.dropColumn('username'); + table.dropColumn('verified_at'); + + table.unique(['url', 'actor_id', 'profile_id']); + }); +};