From 61e6200b02bbea7261e1b93ccd5a8c1fe2471a86 Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Thu, 5 May 2022 12:02:58 +0200 Subject: [PATCH] Only trigger refresh_instances when the actor being changed is a relay Signed-off-by: Thomas Citharel --- ...ance_trigger_to_only_execute_on_relays.exs | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 priv/repo/migrations/20220505091224_change_refresh_instance_trigger_to_only_execute_on_relays.exs diff --git a/priv/repo/migrations/20220505091224_change_refresh_instance_trigger_to_only_execute_on_relays.exs b/priv/repo/migrations/20220505091224_change_refresh_instance_trigger_to_only_execute_on_relays.exs new file mode 100644 index 000000000..de0b33e44 --- /dev/null +++ b/priv/repo/migrations/20220505091224_change_refresh_instance_trigger_to_only_execute_on_relays.exs @@ -0,0 +1,45 @@ +defmodule Mobilizon.Storage.Repo.Migrations.ChangeRefreshInstanceTriggerToOnlyExecuteOnRelays do + use Ecto.Migration + + def up do + execute(""" + DROP TRIGGER IF EXISTS refresh_instances_trigger ON actors; + """) + + execute(""" + CREATE TRIGGER refresh_instances_trigger_new + AFTER INSERT OR UPDATE + ON actors + FOR EACH ROW + WHEN (NEW.preferred_username = 'relay') + EXECUTE PROCEDURE refresh_instances(); + """) + + execute(""" + CREATE TRIGGER refresh_instances_trigger_old + AFTER DELETE + ON actors + FOR EACH ROW + WHEN (OLD.preferred_username = 'relay') + EXECUTE PROCEDURE refresh_instances(); + """) + end + + def down do + execute(""" + DROP TRIGGER IF EXISTS refresh_instances_trigger_new ON actors; + """) + + execute(""" + DROP TRIGGER IF EXISTS refresh_instances_trigger_old ON actors; + """) + + execute(""" + CREATE TRIGGER refresh_instances_trigger + AFTER INSERT OR UPDATE OR DELETE + ON actors + FOR EACH STATEMENT + EXECUTE PROCEDURE refresh_instances(); + """) + end +end