AppFlowy-Cloud/migrations/20250305082545_workspace_delete_trigger.sql
Nathan.fooo 8008959965
Workspace table notification (#1261)
* chore: add delete user notification

* chore: create trigger for workspace delete action
2025-03-06 10:11:49 +08:00

49 lines
No EOL
1.3 KiB
PL/PgSQL

CREATE TABLE IF NOT EXISTS af_workspace_deleted (
workspace_id uuid PRIMARY KEY NOT NULL,
deleted_at timestamp with time zone DEFAULT now()
);
GRANT SELECT, INSERT, UPDATE, DELETE ON public.af_workspace_deleted TO supabase_auth_admin;
-- Workspace delete trigger
CREATE OR REPLACE FUNCTION workspace_deleted_trigger_function()
RETURNS trigger AS
$$
DECLARE
payload jsonb;
BEGIN
payload := jsonb_build_object(
'workspace_id', OLD.workspace_id
);
INSERT INTO public.af_workspace_deleted (workspace_id, deleted_at)
VALUES (OLD.workspace_id, now())
ON CONFLICT DO NOTHING;
PERFORM pg_notify('af_workspace_deleted', payload::text);
RETURN OLD;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER on_workspace_delete
AFTER DELETE ON public.af_workspace
FOR EACH ROW
EXECUTE FUNCTION workspace_deleted_trigger_function();
-- Delete user trigger
CREATE OR REPLACE FUNCTION notify_user_deletion()
RETURNS TRIGGER AS $$
DECLARE
payload TEXT;
BEGIN
payload := jsonb_build_object(
'user_uuid', OLD.uuid::text
);
PERFORM pg_notify('af_user_deleted', payload::text);
RETURN OLD;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER user_deletion_trigger
AFTER DELETE ON public.af_user
FOR EACH ROW
EXECUTE FUNCTION notify_user_deletion();