dkforest

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

tableInvitations.go (1432B)


      1 package database
      2 
      3 import (
      4 	"dkforest/pkg/utils"
      5 	"github.com/sirupsen/logrus"
      6 	"time"
      7 )
      8 
      9 type Invitation struct {
     10 	ID            int64
     11 	Token         string
     12 	OwnerUserID   UserID
     13 	InviteeUserID UserID
     14 	CreatedAt     time.Time
     15 	UpdatedAt     time.Time
     16 }
     17 
     18 // Save user in the database
     19 func (i *Invitation) Save(db *DkfDB) error {
     20 	return db.db.Save(i).Error
     21 }
     22 
     23 // DoSave user in the database, ignore error
     24 func (i *Invitation) DoSave(db *DkfDB) {
     25 	if err := db.db.Save(i).Error; err != nil {
     26 		logrus.Error(err)
     27 	}
     28 }
     29 
     30 func (d *DkfDB) CreateInvitation(userID UserID) (out Invitation, err error) {
     31 	out = Invitation{
     32 		Token:         utils.GenerateToken32(),
     33 		OwnerUserID:   userID,
     34 		InviteeUserID: 1,
     35 	}
     36 	err = d.db.Create(&out).Error
     37 	return
     38 }
     39 
     40 func (d *DkfDB) DeleteAllUserUnusedInvitations(userID UserID) (err error) {
     41 	err = d.db.Delete(&Invitation{}, "owner_user_id = ? AND invitee_user_id == 1", userID).Error
     42 	return
     43 }
     44 
     45 func (d *DkfDB) GetUnusedInvitationByToken(token string) (out Invitation, err error) {
     46 	err = d.db.First(&out, "token = ? AND invitee_user_id == 1", token).Error
     47 	return
     48 }
     49 
     50 func (d *DkfDB) GetUserInvitations(userID UserID) (out []Invitation, err error) {
     51 	err = d.db.Find(&out, "owner_user_id = ?", userID).Error
     52 	return
     53 }
     54 
     55 func (d *DkfDB) GetUserUnusedInvitations(userID UserID) (out []Invitation, err error) {
     56 	err = d.db.Find(&out, "owner_user_id = ? AND invitee_user_id == 1", userID).Error
     57 	return
     58 }