48 lines
1.3 KiB
MySQL
48 lines
1.3 KiB
MySQL
|
ALTER TYPE community_visibility
|
||
|
ADD value 'Private';
|
||
|
|
||
|
-- Change `community_follower.pending` to `state` enum
|
||
|
CREATE TYPE community_follower_state AS enum (
|
||
|
'Accepted',
|
||
|
'Pending',
|
||
|
'ApprovalRequired'
|
||
|
);
|
||
|
|
||
|
ALTER TABLE community_follower
|
||
|
ALTER COLUMN pending DROP DEFAULT;
|
||
|
|
||
|
CREATE OR REPLACE FUNCTION convert_follower_state (b bool)
|
||
|
RETURNS community_follower_state
|
||
|
LANGUAGE sql
|
||
|
AS $$
|
||
|
SELECT
|
||
|
CASE WHEN b = TRUE THEN
|
||
|
'Pending'::community_follower_state
|
||
|
ELSE
|
||
|
'Accepted'::community_follower_state
|
||
|
END
|
||
|
$$;
|
||
|
|
||
|
ALTER TABLE community_follower
|
||
|
ALTER COLUMN pending TYPE community_follower_state
|
||
|
USING convert_follower_state (pending);
|
||
|
|
||
|
DROP FUNCTION convert_follower_state;
|
||
|
|
||
|
ALTER TABLE community_follower RENAME COLUMN pending TO state;
|
||
|
|
||
|
-- Add column for mod who approved the private community follower
|
||
|
-- Dont use foreign key here, otherwise joining to person table doesnt work easily
|
||
|
ALTER TABLE community_follower
|
||
|
ADD COLUMN approver_id int REFERENCES person ON UPDATE CASCADE ON DELETE CASCADE;
|
||
|
|
||
|
-- Enable signed fetch, necessary to fetch content in private communities
|
||
|
ALTER TABLE ONLY local_site
|
||
|
ALTER COLUMN federation_signed_fetch SET DEFAULT TRUE;
|
||
|
|
||
|
UPDATE
|
||
|
local_site
|
||
|
SET
|
||
|
federation_signed_fetch = TRUE;
|
||
|
|