112 lines
2.4 KiB
PL/PgSQL
112 lines
2.4 KiB
PL/PgSQL
CREATE OR REPLACE FUNCTION notify_users() RETURNS TRIGGER AS $$
|
|
DECLARE
|
|
record RECORD;
|
|
id UUID;
|
|
payload JSON;
|
|
BEGIN
|
|
IF (TG_OP = 'DELETE') THEN
|
|
id = OLD.id;
|
|
ELSE
|
|
id = NEW.id;
|
|
END IF;
|
|
|
|
payload = json_build_object(
|
|
'table', TG_TABLE_NAME,
|
|
'action', TG_OP,
|
|
'id', id
|
|
);
|
|
|
|
PERFORM pg_notify('users.events', payload::text);
|
|
|
|
RETURN NULL;
|
|
END;
|
|
$$ LANGUAGE plpgsql;
|
|
|
|
CREATE OR REPLACE FUNCTION notify_listings() RETURNS TRIGGER AS $$
|
|
DECLARE
|
|
record RECORD;
|
|
id int8;
|
|
payload JSON;
|
|
BEGIN
|
|
IF (TG_OP = 'DELETE') THEN
|
|
id = OLD.id;
|
|
ELSE
|
|
id = NEW.id;
|
|
END IF;
|
|
|
|
payload = json_build_object(
|
|
'table', TG_TABLE_NAME,
|
|
'action', TG_OP,
|
|
'id', id
|
|
);
|
|
|
|
PERFORM pg_notify('listings.events', payload::text);
|
|
|
|
RETURN NULL;
|
|
END;
|
|
$$ LANGUAGE plpgsql;
|
|
|
|
CREATE OR REPLACE FUNCTION notify_offers() RETURNS TRIGGER AS $$
|
|
DECLARE
|
|
record RECORD;
|
|
id UUID;
|
|
payload JSON;
|
|
BEGIN
|
|
IF (TG_OP = 'DELETE') THEN
|
|
id = OLD.id;
|
|
ELSE
|
|
id = NEW.id;
|
|
END IF;
|
|
|
|
payload = json_build_object(
|
|
'table', TG_TABLE_NAME,
|
|
'action', TG_OP,
|
|
'id', id
|
|
);
|
|
|
|
PERFORM pg_notify('offers.events', payload::text);
|
|
|
|
RETURN NULL;
|
|
END;
|
|
$$ LANGUAGE plpgsql;
|
|
|
|
CREATE OR REPLACE FUNCTION notify_wants() RETURNS TRIGGER AS $$
|
|
DECLARE
|
|
record RECORD;
|
|
id UUID;
|
|
payload JSON;
|
|
BEGIN
|
|
IF (TG_OP = 'DELETE') THEN
|
|
id = OLD.id;
|
|
ELSE
|
|
id = NEW.id;
|
|
END IF;
|
|
|
|
payload = json_build_object(
|
|
'table', TG_TABLE_NAME,
|
|
'action', TG_OP,
|
|
'id', id
|
|
);
|
|
|
|
PERFORM pg_notify('wants.events', payload::text);
|
|
|
|
RETURN NULL;
|
|
END;
|
|
$$ LANGUAGE plpgsql;
|
|
|
|
CREATE OR REPLACE TRIGGER notify_wants_event
|
|
AFTER INSERT OR UPDATE OR DELETE ON wants
|
|
FOR EACH ROW EXECUTE PROCEDURE notify_wants();
|
|
|
|
CREATE OR REPLACE TRIGGER notify_listings_event
|
|
AFTER INSERT OR UPDATE OR DELETE ON listings
|
|
FOR EACH ROW EXECUTE PROCEDURE notify_listings();
|
|
|
|
CREATE OR REPLACE TRIGGER notify_offers_event
|
|
AFTER INSERT OR UPDATE OR DELETE ON offers
|
|
FOR EACH ROW EXECUTE PROCEDURE notify_offers();
|
|
|
|
CREATE OR REPLACE TRIGGER notify_users_event
|
|
AFTER INSERT OR UPDATE OR DELETE ON users
|
|
FOR EACH ROW EXECUTE PROCEDURE notify_users();
|