dkforest

A forum and chat platform (onion)
git clone https://git.dasho.dev/n0tr1v/dkforest.git
Log | Files | Refs | LICENSE

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 }