Подскажите как реализовать механизм following'а с уведомлением о новых записях.
Интересуют детали реализации на уровне базы данных. Использую MySQL, так как нереляционную СУБД применить нет возможности.
Загвоздка возникла из-за того, что пользователю, который подписан, например, на комменты к записи показывается счетчик новых комментариев и непонятно как декрементировать или обнулять значение этого счетчика при просмотре комментов.
Прошу прощения за смутную формулировку. Проблема вот в чем: первоначально я думал хранить счетчики новых комментов для каждого пользователя совокупно. То есть при добавлении комментария к отслеживаемой записи, каждому пользователю, следящему за этой записью, в столбец «новые комментарии» прибавляется единица. Это нужно для того, чтобы, когда пользователь заходит на сайт, он в соответствующем месте видел сколько новых комментов всего добавилось к тем записям, за которыми он следит.
В такой организации, помимо всего прочего, есть жирнющий минус — допустим, заходит пользователь на сайт и видит, что всего добавилось 20 новых комментов к отслеживаемым записям… он заходит в какую-нибудь запись — там, к примеру, накидали 10 новых комментариев, и, после того как он прочитал эти комменты, счетчик новых комментариев (там где было 20) должен измениться (в данном случае на цифру 10). Проблема в том, что неизвестно сколько в данной записи новых комментариев для пользователя… и на какую цифру уменьшать счетчик.
Плюс к этому: например, я подписываюсь на обновления пользователя. И еще на десяток других юзверей. Они создают записи, и, в очередной мой заход на сайт, я вижу счетчик новых записей равен, ну, 5-ти например. Я перехожу в интерфейс, где выводятся новые записи. Просматриваю какую-нибудь. Вопрос: как мне учесть этот факт (что я просмотрел какую-то определенную новую запись), ведь эти записи принадлежат их автору и я не могу там выставить какой-то статус «просмотрено». Копировать отслеживаемые записи себе? Но если в первоначальную запись будут внесены изменения — у меня они не появятся…
Чувствую, что по-прежнему сумбурно объясняю, но как есть)
Могу посоветовать вот что:
Сделать таблицу «пользователь»-«запись»-«время последнего просмотра».
Когда пользователь заходит в запись, устанавливается текущее время.
Чтобы получить число новых комментариев, делается запрос: «если дата комментария больше даты последнего просмотра». И т.д.
Число новых комментариев из всех записей берется так же.