Подписка (subscription) в OXITE
Разработчики OXITE предоставили базовую логику подписки на комментарии к записи блога. Причем, существует возможность подписки как зарегистрированного пользователя, так и анонимного.
Модель базы данных для такой подписки включает в себя таблицу пользователей (oxite_User[UserID, ...]), таблицу подписчиков (oxite_Subscription[SubscriptionID, PostID, UserID]) и таблицу анонимных подписчиков (oxite_SubscriptionAnonymous[SubscriptionID, Name, Email]).
Тут всё понятно. Путем соединения таблиц, вытаскиваются зарегистрированные подписчики (со всеми данными) и анонимные подписчики (немного данных в виде имени и адреса эл. почты) для определенного поста. Вот и всё.
Чего не хватает? А не хватает универсального механизма подписки на всё что угодно: на комментарии к посту, на новые посты, на события и т.п.
Существенных изменений в логике OXITE я всегда избегал, поэтому логика осталась практически такой же, т.е. подписчики как были в двух таблицах oxite_Subscription и oxite_SubscriptionAnonymous, так и остались. Немного модифицировалась таблица oxite_Subscription (удалил поле PostID). И добавилась таблица oxite_PostSubscriptionRelationship[PostID, SubscriptionID], которая заменила удаленное поле PostID и обеспечила соединение таблиц (для подсписчиков на комментарии к посту).
Остается корректировать классы репозиториев (для нужного провайдера данных) и добавлять, например, таблицы oxite_NewsSubscriptionRelationship[NewsID, SubscriptionID] (подписка на новости) или oxite_BlogSubscriptionRelationship[BlogPostID, SubcriptionID] (подписка на новые посты блога).
