dashboard/database/table/premiumguilds.go
2019-10-20 14:11:54 +01:00

73 lines
1.7 KiB
Go

package table
import (
"github.com/TicketsBot/GoPanel/database"
"strings"
"time"
)
type PremiumGuilds struct {
Guild int64 `gorm:"column:GUILDID;unique;primary_key"`
Expiry int64 `gorm:"column:EXPIRY"`
User int64 `gorm:"column:USERID"`
ActivatedBy int64 `gorm:"column:ACTIVATEDBY"`
Keys string `gorm:"column:KEYSUSED"`
}
func (PremiumGuilds) TableName() string {
return "premiumguilds"
}
func IsPremium(guild int64, ch chan bool) {
var node PremiumGuilds
database.Database.Where(PremiumGuilds{Guild: guild}).First(&node)
if node.Expiry == 0 {
ch <- false
return
}
current := time.Now().UnixNano() / int64(time.Millisecond)
ch <- node.Expiry > current
}
func AddPremium(key string, guild, userId, length, activatedBy int64) {
var expiry int64
hasPrem := make(chan bool)
go IsPremium(guild, hasPrem)
isPremium := <- hasPrem
if isPremium {
expiryChan := make(chan int64)
go GetExpiry(guild, expiryChan)
currentExpiry := <- expiryChan
expiry = currentExpiry + length
} else {
current := time.Now().UnixNano() / int64(time.Millisecond)
expiry = current + length
}
keysChan := make(chan []string)
go GetKeysUsed(guild, keysChan)
keys := <- keysChan
keys = append(keys, key)
keysStr := strings.Join(keys,",")
var node PremiumGuilds
database.Database.Where(PremiumGuilds{Guild: guild}).Assign(PremiumGuilds{Expiry: expiry, User: userId, ActivatedBy: activatedBy, Keys: keysStr}).FirstOrCreate(&node)
}
func GetExpiry(guild int64, ch chan int64) {
var node PremiumGuilds
database.Database.Where(PremiumGuilds{Guild: guild}).First(&node)
ch <- node.Expiry
}
func GetKeysUsed(guild int64, ch chan []string) {
var node PremiumGuilds
database.Database.Where(PremiumGuilds{Guild: guild}).First(&node)
ch <- strings.Split(node.Keys, ",")
}