tableUserForumThreadSubscriptions.go (1166B)
1 package database 2 3 import ( 4 "time" 5 6 "github.com/sirupsen/logrus" 7 ) 8 9 type UserForumThreadSubscription struct { 10 UserID UserID 11 ThreadID ForumThreadID 12 CreatedAt time.Time 13 User User 14 } 15 16 func (s *UserForumThreadSubscription) DoSave(db *DkfDB) { 17 if err := db.db.Save(s).Error; err != nil { 18 logrus.Error(err) 19 } 20 } 21 22 func (d *DkfDB) SubscribeToForumThread(userID UserID, threadID ForumThreadID) (err error) { 23 return d.db.Create(&UserForumThreadSubscription{UserID: userID, ThreadID: threadID}).Error 24 } 25 26 func (d *DkfDB) UnsubscribeFromForumThread(userID UserID, threadID ForumThreadID) (err error) { 27 return d.db.Delete(&UserForumThreadSubscription{}, "user_id = ? AND thread_id = ?", userID, threadID).Error 28 } 29 30 func (d *DkfDB) IsUserSubscribedToForumThread(userID UserID, threadID ForumThreadID) bool { 31 var count int64 32 d.db.Model(UserForumThreadSubscription{}).Where("user_id = ? AND thread_id = ?", userID, threadID).Count(&count) 33 return count == 1 34 } 35 36 func (d *DkfDB) GetUsersSubscribedToForumThread(threadID ForumThreadID) (out []UserForumThreadSubscription, err error) { 37 err = d.db.Preload("User").Find(&out, "thread_id = ?", threadID).Error 38 return 39 }