tasq/supabase/migrations/20260224130000_notifications_trigger.sql
Marc Rejohn Castillano 5979a04254 * Push Notification Setup and attempt
* Office Ordering
* Allow editing of Task and Ticket Details after creation
2026-02-24 21:06:46 +08:00

36 lines
1.3 KiB
PL/PgSQL

-- create a trigger that calls the `send_fcm` edge function whenever a
-- new row is inserted into `notifications`. This moves push logic entirely
-- to the backend, bypassing any CORS or auth issues that occur when web
-- clients try to invoke the function directly.
-- the http extension is available on Supabase databases; enable it if
-- it's not already installed.
create extension if not exists http;
create or replace function public.notifications_send_fcm_trigger()
returns trigger
language plpgsql as $$
declare
_url text := 'https://pwbxgsuskvqwwaejxutj.supabase.co/functions/v1/send_fcm';
_body text;
begin
-- build a webhook-style payload that matches what the edge function
-- expects when it's invoked from a database trigger.
_body := json_build_object('record', row_to_json(NEW))::text;
-- fire the POST; ignore the result since we don't want inserts to fail
-- just because the push call returned an error.
perform http_post(_url, _body, 'content-type=application/json');
return NEW;
end;
$$;
-- drop any previous trigger (defensive) and create a new one.
drop trigger if exists trig_notifications_send_fcm on public.notifications;
create trigger trig_notifications_send_fcm
after insert on public.notifications
for each row
execute function public.notifications_send_fcm_trigger();