dkforest

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

tableIgnoredUsers.go (1888B)


      1 package database
      2 
      3 import (
      4 	"time"
      5 
      6 	"github.com/sirupsen/logrus"
      7 )
      8 
      9 type IgnoredUser struct {
     10 	UserID        UserID
     11 	IgnoredUserID UserID
     12 	CreatedAt     time.Time
     13 	User          User
     14 	IgnoredUser   User
     15 }
     16 
     17 func (d *DkfDB) DeleteOldIgnoredUsers() {
     18 	if err := d.db.Exec(`DELETE FROM ignored_users WHERE ignored_user_id IN
     19 	(SELECT iu.ignored_user_id FROM ignored_users iu INNER JOIN users u ON u.id = iu.ignored_user_id WHERE u.last_seen_at < date('now', '-60 Day'))`).Error; err != nil {
     20 		logrus.Error(err)
     21 	}
     22 }
     23 
     24 func (d *DkfDB) GetIgnoredUsers(userID UserID) (out []IgnoredUser, err error) {
     25 	err = d.db.Where("user_id = ?", userID).Preload("IgnoredUser").Find(&out).Error
     26 	return
     27 }
     28 
     29 func (d *DkfDB) GetIgnoredUsersUsernames(userID UserID) (out []Username, err error) {
     30 	err = d.db.Model(&IgnoredUser{}).
     31 		Joins("INNER JOIN users ON users.id = ignored_users.ignored_user_id").
     32 		Where("ignored_users.user_id = ?", userID).
     33 		Pluck("users.username", &out).
     34 		Error
     35 	return
     36 }
     37 
     38 func (d *DkfDB) GetIgnoredUsersIDs(userID UserID) (out []UserID, err error) {
     39 	err = d.db.Model(&IgnoredUser{}).
     40 		Joins("INNER JOIN users ON users.id = ignored_users.ignored_user_id").
     41 		Where("ignored_users.user_id = ?", userID).
     42 		Pluck("users.id", &out).
     43 		Error
     44 	return
     45 }
     46 
     47 // GetIgnoredByUsers get a list of people who ignore userID
     48 func (d *DkfDB) GetIgnoredByUsers(userID UserID) (out []IgnoredUser, err error) {
     49 	err = d.db.Where("ignored_user_id = ?", userID).Find(&out).Error
     50 	return
     51 }
     52 
     53 func (d *DkfDB) IgnoreUser(userID, ignoredUserID UserID) {
     54 	ignore := IgnoredUser{UserID: userID, IgnoredUserID: ignoredUserID}
     55 	if err := d.db.Create(&ignore).Error; err != nil {
     56 		logrus.Error(err)
     57 	}
     58 }
     59 
     60 func (d *DkfDB) UnIgnoreUser(userID, ignoredUserID UserID) {
     61 	if err := d.db.Delete(IgnoredUser{}, "user_id = ? AND ignored_user_id = ?", userID, ignoredUserID).Error; err != nil {
     62 		logrus.Error(err)
     63 	}
     64 }