Mam stronkę z koncertami i chciałbym stworzyć taką funkcjonalność, że:
- użytkownik może obserwować artystę
- jeżeli się pojawi nowy koncert artysty, to użytkownicy którzy go obserwują dostaną info np.: “Nowy koncert: OSTR - 10.03.2016 - Warszawa”
- podobnie w przypadku gdy pojawia się jakaś zmiana np. “OSTR - 10.03.2015 - Warszawa, nowa lokalizacja: Klub Stodoła, Warszawa”
Info o tym byłoby widoczne na stronie (tak jak powiadomienia na FB), a także mógłby być wysyłany jakiś mail z info.
Teraz zastanawiam się jak to ogarnąć, mam dwa pomysły(na przykładzie nowego koncertu)
- User - UserNotification - Notification - many-to-many
Przy tworzeniu nowego koncertu tworze tez nowe powiadomienie i odpalam jakiś background job który tworzy odpowiednie UserNotification dla tych którzy obserwowali danego artystę. - User - Notification (has_many, belongs_to)
Przy tworzeniu nowego koncertu od razu odpalam background job który dla każdego użytkownika tworzy powiadomienie.
Niestety będzie tutaj duzo powtórzeń
np.
user_id, notification_text
1, “Nowy Koncert OSTR - Warszawa”
2, “Nowy Koncert OSTR - Warszawa” itd.
Pierwszy pomysł wydaje mi się bardziej zgrabny, ale że zapytanie o powiadomienia dla użytkownika będzie częste, pomyślałem ze druga wersja może być bardziej odpowiednia.
Co o tym myślicie? A może jeszcze inaczej to zrobić?