@michaelromanov90

Как организовать систему подписок?

Доброго времени суток! Передо мной стоит такая задача (реализовать систему, которая позволяет):
1) пользователи могут создавать посты (дело обычное);
2) у поста может быть категория (дело обычное);
3) пользователь может быть подписан на:
3.1) новости (т.е. новые посты) из определённых категорий (подписки на категории)
3.2) на новости (т.е.) посты других пользователей.

Товарищи-программисты, дайте совет как такое реализовать??

Пока я остановился на следующему решении:
1) создаю таблицу подписок,
она будет содержать подписки на 2типа: категории и других пользователей (можно сделать и 2е таблицы, но думаю оставить одну, просто будет поле, отвечающее за "тип").

2) последний этап создания поста будет сводится к тому, что будет проверено, есть ли данные о категории этого поста или авторе в таблице, что я создал на первом этапе.

3) далее идём в 3ую таблицу (1=посты,2=подписки,3=соотнесения): все совпадения из второго этапа будут отмечены здесь:
каждый id (каждого поста) будет проставлен в true для каждого пользователя

4) на фронтенде при скроллинге: будут проверяться данные в контексте 3его этапа (3ей таблицы). Если true = буду показывать.

Минусы:
это действительно получается подписка. В случае если пользователь изменит данные своей подписки на посты или категории, то всё что было создано до его изменений - так и останется не отмеченным. В противном случае - нужно запускать крон и отлавливать изменения, но тогда система окажется реально прожёрливой. А тут и без того всё выходит накладно...

Как думайте, глупое ли я решение придумал и / или что посоветуйте?
  • Вопрос задан
  • 166 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
А зачем крон, повесьте пару триггеров на таблицу подписок, AFTER INSERT и AFTER DELETE. Другое дело, надо ли пользователю получать все посты, что были в этой теме до его подписки, там ведь могут быть сотни или тысячи постов.
А в остальном логика правильная, добавился пост - добавили в таблицу отметки для всех пользователей, которые подписаны на тему/автора. Увидел пользователь этот пост - убрали соответствующую отметку.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы