Add script to migrate duplicated study groups

This commit is contained in:
Sebastian Serth
2022-09-22 10:17:48 +02:00
committed by Sebastian Serth
parent ac3dc8d30f
commit 5e90a93f9d

View File

@ -0,0 +1,43 @@
CREATE OR REPLACE FUNCTION migrate_study_group(target_study_group int, duplicated_study_group int)
RETURNS VOID
LANGUAGE plpgsql
AS
$$
DECLARE
BEGIN
IF target_study_group = duplicated_study_group THEN
RETURN;
END IF;
UPDATE community_solution_contributions SET study_group_id = target_study_group WHERE study_group_id = duplicated_study_group;
UPDATE remote_evaluation_mappings SET study_group_id = target_study_group WHERE study_group_id = duplicated_study_group;
UPDATE authentication_tokens SET study_group_id = target_study_group WHERE study_group_id = duplicated_study_group;
UPDATE subscriptions SET study_group_id = target_study_group WHERE study_group_id = duplicated_study_group;
UPDATE submissions SET study_group_id = target_study_group WHERE study_group_id = duplicated_study_group;
-- Preventing duplicated entries in exercises_proxy_exercises
-- The same proxy exercise should not have two entries for the same exercise it proxies.
DELETE
FROM study_group_memberships
WHERE study_group_id = duplicated_study_group
AND id IN (SELECT duplicated.id
FROM study_group_memberships AS target,
study_group_memberships AS duplicated
WHERE target.study_group_id = target_study_group
AND duplicated.study_group_id = duplicated_study_group
AND target.user_id = duplicated.user_id
AND target.user_type = duplicated.user_type);
UPDATE study_group_memberships SET study_group_id = target_study_group where study_group_id = duplicated_study_group;
DELETE FROM study_groups WHERE id = duplicated_study_group;
END;
$$;
/* Execute migration
do $$
begin
perform migrate_study_group(target_study_group := 237, duplicated_study_group := 695);
end
$$;
*/