StatusHashtagObserver.php 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. <?php
  2. namespace App\Observers;
  3. use DB;
  4. use App\StatusHashtag;
  5. use App\Services\StatusHashtagService;
  6. use App\Jobs\HomeFeedPipeline\HashtagInsertFanoutPipeline;
  7. use App\Jobs\HomeFeedPipeline\HashtagRemoveFanoutPipeline;
  8. use Illuminate\Contracts\Events\ShouldHandleEventsAfterCommit;
  9. class StatusHashtagObserver implements ShouldHandleEventsAfterCommit
  10. {
  11. /**
  12. * Handle the notification "created" event.
  13. *
  14. * @param \App\StatusHashtag $hashtag
  15. * @return void
  16. */
  17. public function created(StatusHashtag $hashtag)
  18. {
  19. StatusHashtagService::set($hashtag->hashtag_id, $hashtag->status_id);
  20. DB::table('hashtags')->where('id', $hashtag->hashtag_id)->increment('cached_count');
  21. if($hashtag->status_visibility && $hashtag->status_visibility === 'public') {
  22. HashtagInsertFanoutPipeline::dispatch($hashtag)->onQueue('feed');
  23. }
  24. }
  25. /**
  26. * Handle the notification "updated" event.
  27. *
  28. * @param \App\StatusHashtag $hashtag
  29. * @return void
  30. */
  31. public function updated(StatusHashtag $hashtag)
  32. {
  33. StatusHashtagService::set($hashtag->hashtag_id, $hashtag->status_id);
  34. }
  35. /**
  36. * Handle the notification "deleted" event.
  37. *
  38. * @param \App\StatusHashtag $hashtag
  39. * @return void
  40. */
  41. public function deleted(StatusHashtag $hashtag)
  42. {
  43. StatusHashtagService::del($hashtag->hashtag_id, $hashtag->status_id);
  44. DB::table('hashtags')->where('id', $hashtag->hashtag_id)->decrement('cached_count');
  45. if($hashtag->status_visibility && $hashtag->status_visibility === 'public') {
  46. HashtagRemoveFanoutPipeline::dispatch($hashtag->status_id, $hashtag->hashtag_id)->onQueue('feed');
  47. }
  48. }
  49. /**
  50. * Handle the notification "restored" event.
  51. *
  52. * @param \App\StatusHashtag $hashtag
  53. * @return void
  54. */
  55. public function restored(StatusHashtag $hashtag)
  56. {
  57. StatusHashtagService::set($hashtag->hashtag_id, $hashtag->status_id);
  58. }
  59. /**
  60. * Handle the notification "force deleted" event.
  61. *
  62. * @param \App\StatusHashtag $hashtag
  63. * @return void
  64. */
  65. public function forceDeleted(StatusHashtag $hashtag)
  66. {
  67. StatusHashtagService::del($hashtag->hashtag_id, $hashtag->status_id);
  68. }
  69. }