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();