mirror of
https://github.com/LemmyNet/lemmy.git
synced 2025-03-29 06:35:29 +00:00
68 lines
2.3 KiB
MySQL
68 lines
2.3 KiB
MySQL
|
-- Change community.visibility to allow values:
|
||
|
-- ('Public', 'LocalOnlyPublic', 'LocalOnlyPrivate','Private', 'Hidden')
|
||
|
-- rename old enum and add new one
|
||
|
ALTER TYPE community_visibility RENAME TO community_visibility__;
|
||
|
|
||
|
CREATE TYPE community_visibility AS enum (
|
||
|
'Public',
|
||
|
'LocalOnlyPublic',
|
||
|
'LocalOnly',
|
||
|
'Private',
|
||
|
'Unlisted'
|
||
|
);
|
||
|
|
||
|
-- drop default value and index which reference old enum
|
||
|
ALTER TABLE community
|
||
|
ALTER COLUMN visibility DROP DEFAULT;
|
||
|
|
||
|
DROP INDEX idx_community_random_number;
|
||
|
|
||
|
-- change the column type
|
||
|
ALTER TABLE community
|
||
|
ALTER COLUMN visibility TYPE community_visibility
|
||
|
USING visibility::text::community_visibility;
|
||
|
|
||
|
-- add default and index back in
|
||
|
ALTER TABLE community
|
||
|
ALTER COLUMN visibility SET DEFAULT 'Public';
|
||
|
|
||
|
CREATE INDEX idx_community_random_number ON community (random_number) INCLUDE (local, nsfw)
|
||
|
WHERE
|
||
|
NOT (deleted OR removed OR visibility = 'Private' OR visibility = 'Unlisted');
|
||
|
|
||
|
DROP TYPE community_visibility__ CASCADE;
|
||
|
|
||
|
ALTER TYPE community_visibility RENAME VALUE 'LocalOnly' TO 'LocalOnlyPrivate';
|
||
|
|
||
|
-- write hidden value to visibility column
|
||
|
UPDATE
|
||
|
community
|
||
|
SET
|
||
|
visibility = 'Unlisted'
|
||
|
WHERE
|
||
|
hidden;
|
||
|
|
||
|
-- drop the old hidden column
|
||
|
ALTER TABLE community
|
||
|
DROP COLUMN hidden;
|
||
|
|
||
|
-- change modlog tables
|
||
|
ALTER TABLE modlog_combined
|
||
|
DROP COLUMN mod_hide_community_id;
|
||
|
|
||
|
DROP TABLE mod_hide_community;
|
||
|
|
||
|
CREATE TABLE mod_change_community_visibility (
|
||
|
id serial PRIMARY KEY,
|
||
|
community_id int REFERENCES community ON UPDATE CASCADE ON DELETE CASCADE NOT NULL,
|
||
|
mod_person_id int REFERENCES person ON UPDATE CASCADE ON DELETE CASCADE NOT NULL,
|
||
|
published timestamptz NOT NULL DEFAULT now(),
|
||
|
reason text,
|
||
|
visibility community_visibility NOT NULL
|
||
|
);
|
||
|
|
||
|
ALTER TABLE modlog_combined
|
||
|
ADD COLUMN mod_change_community_visibility_id int REFERENCES mod_change_community_visibility (id) ON UPDATE CASCADE ON DELETE CASCADE,
|
||
|
ADD CONSTRAINT modlog_combined_check CHECK ((num_nonnulls (admin_allow_instance_id, admin_block_instance_id, admin_purge_comment_id, admin_purge_community_id, admin_purge_person_id, admin_purge_post_id, mod_add_id, mod_add_community_id, mod_ban_id, mod_ban_from_community_id, mod_feature_post_id, mod_change_community_visibility_id, mod_lock_post_id, mod_remove_comment_id, mod_remove_community_id, mod_remove_post_id, mod_transfer_community_id) = 1));
|
||
|
|