44 lines
1.9 KiB
PL/PgSQL
44 lines
1.9 KiB
PL/PgSQL
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
|
|
$$;
|
|
*/
|