39 lines
829 B
Go
39 lines
829 B
Go
package table
|
|
|
|
import (
|
|
"github.com/TicketsBot/GoPanel/database"
|
|
"github.com/apex/log"
|
|
)
|
|
|
|
// Use an intermediary table to prevent a many-to-many relationship
|
|
type MemberId struct {
|
|
MemberId int `gorm:"column:MEMBERID;primary_key;auto_increment"`
|
|
GuildId int64 `gorm:"column:GUILDID"`
|
|
UserId int64 `gorm:"column:USERID"`
|
|
}
|
|
|
|
func (MemberId) TableName() string {
|
|
return "cache_memberids"
|
|
}
|
|
|
|
func GetMemberId(guildId, userId int64, ch chan *int) {
|
|
var row MemberId
|
|
database.Database.Where(&MemberId{GuildId: guildId, UserId: userId}).Take(&row)
|
|
|
|
if row.MemberId == 0 {
|
|
row = MemberId{
|
|
GuildId: guildId,
|
|
UserId: userId,
|
|
}
|
|
if db := database.Database.Create(row).Scan(&row); db.Error != nil {
|
|
log.Error(db.Error.Error())
|
|
ch <- nil
|
|
return
|
|
}
|
|
|
|
ch <- &row.MemberId
|
|
} else {
|
|
ch <- &row.MemberId
|
|
}
|
|
}
|