73 lines
1.7 KiB
Go
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, ",")
|
|
}
|