Docker Hub の postgresql イメージは pg_net のみ

以前、記事で TRIGGER 内の http post は http extension を使おうと言ったが、Docker Hub においてある postgresql イメージは pg_net しか持っていないかった。

仕方がないので、主要な機能は Vercel に持っていき、イベントトリガでは対象 ID を Vercel に向けて送信するようにしてみた。

CREATE OR REPLACE FUNCTION do_post()
RETURNS TRIGGER
LANGUAGE=plpsgl AS $$
DECLARE
BEGIN
  net.http_post('https://example.com/api/deleter', jsonb_build_object('Content-Type', 'application/json'),
    '{"ID", OLD."ID"}'
  })
END;
$$;

DROP TRIGGER IF EXISTS on_user_deleted;
CREATE TRIGGER on_user_deleted AFTER DELETE ON "Users"
EXECUTE PROCEDURE do_post();

当然、net.http_post の実行は Users から削除された後になってしまうが、Vercel の API を呼び出すことが出来ている。

投稿者について
みのしす

小さいときは科学者になろうとしたのに、その時にたまたま身に着けたプログラミングで未だに飯を食っているしがないおじさんです。(年齢的にはもうすぐおじいさん)

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です