mirror of
https://github.com/LemmyNet/lemmy
synced 2024-11-21 20:13:05 +00:00
ad90cd77f9
* add private visibility * filter private communities in post_view.rs * also filter in comment_view * community follower state * remove unused method * sql fmt * add CommunityFollower.approved_by * implement api endpoints * api changes * only admins can create private community for now * add local api tests * fix api tests * follow remote private community * use authorized fetch for content in private community * federate community visibility * dont mark content in private community as public * expose ApprovalRequired in api * also check content fetchable for outbox/featured * address private community content to followers * implement reject activity * fix tests * add files * remove local api tests * dont use delay * is_new_instance * single query for is_new_instance * return subscribed type for pending follow * working * need to catch errors in waitUntil * clippy * fix query * lint for unused async * diesel.toml comment * add comment * avoid db reads * rename approved_by to approver_id * add helper * form init * list pending follows should return items for all communities * clippy * ci * fix down migration * fix api tests * references * rename * run git diff * ci * fix schema check * fix joins * ci * ci * skip_serializing_none * fix test --------- Co-authored-by: Dessalines <dessalines@users.noreply.github.com>
47 lines
1.3 KiB
PL/PgSQL
47 lines
1.3 KiB
PL/PgSQL
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;
|
|
|