You've already forked AstralRinth
forked from didirus/AstralRinth
Links (#763)
This commit is contained in:
69
migrations/20231117073600_links_overhaul.sql
Normal file
69
migrations/20231117073600_links_overhaul.sql
Normal file
@@ -0,0 +1,69 @@
|
||||
CREATE TABLE link_platforms (
|
||||
id SERIAL PRIMARY KEY,
|
||||
name VARCHAR(16) UNIQUE NOT NULL,
|
||||
|
||||
-- Used for v2 conversion
|
||||
donation BOOLEAN NOT NULL DEFAULT false,
|
||||
-- Will be removed at the end of the migration
|
||||
donation_platform_id INTEGER REFERENCES donation_platforms (id)
|
||||
);
|
||||
|
||||
INSERT INTO link_platforms (donation_platform_id, name, donation)
|
||||
SELECT id, short, true FROM donation_platforms;
|
||||
|
||||
INSERT INTO link_platforms (name, donation) VALUES ('issues', false);
|
||||
INSERT INTO link_platforms (name, donation) VALUES ('wiki', false);
|
||||
INSERT INTO link_platforms (name, donation) VALUES ('discord', false);
|
||||
INSERT INTO link_platforms (name, donation) VALUES ('source', false);
|
||||
INSERT INTO link_platforms (name, donation) VALUES ('site', false);
|
||||
|
||||
CREATE TABLE mods_links (
|
||||
id SERIAL PRIMARY KEY,
|
||||
joining_mod_id BIGINT NOT NULL REFERENCES mods (id),
|
||||
joining_platform_id INTEGER NOT NULL REFERENCES link_platforms (id),
|
||||
url VARCHAR(255) NOT NULL
|
||||
);
|
||||
|
||||
INSERT INTO mods_links (joining_mod_id, joining_platform_id, url)
|
||||
SELECT DISTINCT m.id, lp.id, md.url
|
||||
FROM mods m
|
||||
INNER JOIN mods_donations md ON m.id = md.joining_mod_id
|
||||
INNER JOIN donation_platforms dp ON dp.id = md.joining_platform_id
|
||||
INNER JOIN link_platforms lp ON lp.donation_platform_id = dp.id;
|
||||
|
||||
INSERT INTO mods_links (joining_mod_id, joining_platform_id, url)
|
||||
SELECT DISTINCT m.id, lp.id, issues_url
|
||||
FROM mods m
|
||||
CROSS JOIN link_platforms lp
|
||||
WHERE issues_url IS NOT NULL
|
||||
AND lp.name = 'issues';
|
||||
|
||||
INSERT INTO mods_links (joining_mod_id, joining_platform_id, url)
|
||||
SELECT DISTINCT m.id, lp.id, wiki_url
|
||||
FROM mods m
|
||||
CROSS JOIN link_platforms lp
|
||||
WHERE wiki_url IS NOT NULL
|
||||
AND lp.name = 'wiki';
|
||||
|
||||
INSERT INTO mods_links (joining_mod_id, joining_platform_id, url)
|
||||
SELECT DISTINCT m.id, lp.id, discord_url
|
||||
FROM mods m
|
||||
CROSS JOIN link_platforms lp
|
||||
WHERE discord_url IS NOT NULL
|
||||
AND lp.name = 'discord';
|
||||
|
||||
INSERT INTO mods_links (joining_mod_id, joining_platform_id, url)
|
||||
SELECT DISTINCT m.id, lp.id, source_url
|
||||
FROM mods m
|
||||
CROSS JOIN link_platforms lp
|
||||
WHERE source_url IS NOT NULL
|
||||
AND lp.name = 'source';
|
||||
|
||||
ALTER TABLE mods DROP COLUMN issues_url;
|
||||
ALTER TABLE mods DROP COLUMN wiki_url;
|
||||
ALTER TABLE mods DROP COLUMN discord_url;
|
||||
ALTER TABLE mods DROP COLUMN source_url;
|
||||
|
||||
ALTER TABLE link_platforms DROP COLUMN donation_platform_id;
|
||||
DROP TABLE mods_donations;
|
||||
DROP TABLE donation_platforms;
|
||||
Reference in New Issue
Block a user