Я пытаюсь разработать систему уведомлений для серверной части приложения / веб-сайта для социальных сетей.Сейчас я сосредоточен на обновлении статуса.Что я собираюсь сделать, так это поместить в таблицу postgres триггер, связанный с обновлениями статуса, чтобы каждый раз при публикации нового обновления статуса на мой код отправлялось уведомление.
Пока у меня естьбыл в состоянии сделать это.Но дополнительная функция, которую я хотел бы реализовать, - это извлечение всех людей, которые следят за пользователем, опубликовавшим обновление статуса, чтобы я также мог отправить им уведомление о том, что человек, за которым они следят, опубликовал новое обновление статуса.
Конечно, это можно реализовать, сначала получив уведомление о новом обновлении статуса от postgres, извлекая идентификатор пользователя, который его опубликовал, и сделав запрос в базу данных, чтобы выяснить, какие пользователи следуют за ними.
Но я подумал, что будет эффективнее, если я не сделаю запрос, и вместо этого каждый раз, когда postgres хочет отправить мне уведомление о новом обновлении статуса, он также делает запрос, чтобы выяснить, какие пользователиследите за постером обновления статуса и отправьте эту информацию вместе с уведомлением о новом обновлении статуса.
Но я не могу понять, как я могу сделать запрос в функции postgres, которая зависит от аргументаэтой функции, а затем отправить результат этого запроса вместе саргумент в качестве уведомления.
вот что я пробовал:
create table example (c1 text, c2 text);
create function notif()
returns trigger as
$$
begin
perform pg_notify('event',row_to_json(new)::text);
return new;
end;
$$ language plpgsql;
create trigger trig after insert
on example
for each row execute procedure notif();
А затем я слушаю канал событий из своего кода и получаю вставленную строку.Но я хочу сделать оператор select на основе новой строки в моей функции notif () и отправить результат с новой строкой в код прослушивания.
Буду признателен за любые разъяснения
Спасибо