port to be compatible with GDL bot

This commit is contained in:
Dot-Rar 2020-04-04 17:52:43 +01:00
parent 26172fbd89
commit ce3e50725b
43 changed files with 587 additions and 611 deletions

View File

@ -27,7 +27,7 @@ func BlacklistHandler(ctx *gin.Context) {
// Verify the guild exists // Verify the guild exists
guildIdStr := ctx.Param("id") guildIdStr := ctx.Param("id")
guildId, err := strconv.ParseInt(guildIdStr, 10, 64) guildId, err := strconv.ParseUint(guildIdStr, 10, 64)
if err != nil { if err != nil {
ctx.Redirect(302, config.Conf.Server.BaseUrl) // TODO: 404 Page ctx.Redirect(302, config.Conf.Server.BaseUrl) // TODO: 404 Page
return return
@ -52,7 +52,7 @@ func BlacklistHandler(ctx *gin.Context) {
blacklistedUsers := table.GetBlacklistNodes(guildId) blacklistedUsers := table.GetBlacklistNodes(guildId)
var blacklistedIds []int64 var blacklistedIds []uint64
for _, user := range blacklistedUsers { for _, user := range blacklistedUsers {
blacklistedIds = append(blacklistedIds, user.User) blacklistedIds = append(blacklistedIds, user.User)
} }

View File

@ -28,7 +28,7 @@ func BlacklistRemoveHandler(ctx *gin.Context) {
// Verify the guild exists // Verify the guild exists
guildIdStr := ctx.Param("id") guildIdStr := ctx.Param("id")
guildId, err := strconv.ParseInt(guildIdStr, 10, 64) guildId, err := strconv.ParseUint(guildIdStr, 10, 64)
if err != nil { if err != nil {
ctx.Redirect(302, config.Conf.Server.BaseUrl) // TODO: 404 Page ctx.Redirect(302, config.Conf.Server.BaseUrl) // TODO: 404 Page
return return
@ -53,7 +53,7 @@ func BlacklistRemoveHandler(ctx *gin.Context) {
if ctx.Query("c") == store.Get("csrf").(string) { if ctx.Query("c") == store.Get("csrf").(string) {
targetIdStr := ctx.Param("user") targetIdStr := ctx.Param("user")
targetId, err := strconv.ParseInt(targetIdStr, 10, 64) targetId, err := strconv.ParseUint(targetIdStr, 10, 64)
if err == nil { // If it's a real ID if err == nil { // If it's a real ID
table.RemoveBlacklist(guildId, targetId) table.RemoveBlacklist(guildId, targetId)

View File

@ -27,7 +27,7 @@ func LogsHandler(ctx *gin.Context) {
// Verify the guild exists // Verify the guild exists
guildIdStr := ctx.Param("id") guildIdStr := ctx.Param("id")
guildId, err := strconv.ParseInt(guildIdStr, 10, 64) guildId, err := strconv.ParseUint(guildIdStr, 10, 64)
if err != nil { if err != nil {
ctx.Redirect(302, config.Conf.Server.BaseUrl) // TODO: 404 Page ctx.Redirect(302, config.Conf.Server.BaseUrl) // TODO: 404 Page
return return
@ -63,9 +63,9 @@ func LogsHandler(ctx *gin.Context) {
// Get logs // Get logs
// Get user ID from URL // Get user ID from URL
var filteredUserId int64 var filteredUserId uint64
if utils.IsInt(ctx.Query("userid")) { if utils.IsInt(ctx.Query("userid")) {
filteredUserId, _ = strconv.ParseInt(ctx.Query("userid"), 10, 64) filteredUserId, _ = strconv.ParseUint(ctx.Query("userid"), 10, 64)
} }
// Get ticket ID from URL // Get ticket ID from URL

View File

@ -30,7 +30,7 @@ func PanelCreateHandler(ctx *gin.Context) {
// Verify the guild exists // Verify the guild exists
guildIdStr := ctx.Param("id") guildIdStr := ctx.Param("id")
guildId, err := strconv.ParseInt(guildIdStr, 10, 64) guildId, err := strconv.ParseUint(guildIdStr, 10, 64)
if err != nil { if err != nil {
ctx.Redirect(302, config.Conf.Server.BaseUrl) // TODO: 404 Page ctx.Redirect(302, config.Conf.Server.BaseUrl) // TODO: 404 Page
return return
@ -62,7 +62,7 @@ func PanelCreateHandler(ctx *gin.Context) {
// Get if the guild is premium // Get if the guild is premium
premiumChan := make(chan bool) premiumChan := make(chan bool)
go utils.IsPremiumGuild(store, guildIdStr, premiumChan) go utils.IsPremiumGuild(store, guildId, premiumChan)
premium := <-premiumChan premium := <-premiumChan
// Check the user hasn't met their panel quota // Check the user hasn't met their panel quota
@ -100,7 +100,7 @@ func PanelCreateHandler(ctx *gin.Context) {
// Validate channel // Validate channel
channelIdStr := ctx.PostForm("channel") channelIdStr := ctx.PostForm("channel")
channelId, err := strconv.ParseInt(channelIdStr, 10, 64); if err != nil { channelId, err := strconv.ParseUint(channelIdStr, 10, 64); if err != nil {
ctx.Redirect(302, fmt.Sprintf("/manage/%d/panels?validChannel=false", guildId)) ctx.Redirect(302, fmt.Sprintf("/manage/%d/panels?validChannel=false", guildId))
return return
} }
@ -114,7 +114,7 @@ func PanelCreateHandler(ctx *gin.Context) {
// Validate category // Validate category
categoryStr := ctx.PostForm("categories") categoryStr := ctx.PostForm("categories")
categoryId, err := strconv.ParseInt(categoryStr, 10, 64); if err != nil { categoryId, err := strconv.ParseUint(categoryStr, 10, 64); if err != nil {
ctx.Redirect(302, fmt.Sprintf("/manage/%d/panels?validCategory=false", guildId)) ctx.Redirect(302, fmt.Sprintf("/manage/%d/panels?validCategory=false", guildId))
return return
} }
@ -158,7 +158,7 @@ func PanelCreateHandler(ctx *gin.Context) {
} }
} }
func validateChannel(guildId, channelId int64, res chan bool) { func validateChannel(guildId, channelId uint64, res chan bool) {
// Get channels from DB // Get channels from DB
channelsChan := make(chan []table.Channel) channelsChan := make(chan []table.Channel)
go table.GetCachedChannelsByGuild(guildId, channelsChan) go table.GetCachedChannelsByGuild(guildId, channelsChan)
@ -176,7 +176,7 @@ func validateChannel(guildId, channelId int64, res chan bool) {
res <- validChannel res <- validChannel
} }
func validateCategory(guildId, categoryId int64, res chan bool) { func validateCategory(guildId, categoryId uint64, res chan bool) {
// Get channels from DB // Get channels from DB
categoriesChan := make(chan []table.Channel) categoriesChan := make(chan []table.Channel)
go table.GetCategories(guildId, categoriesChan) go table.GetCategories(guildId, categoriesChan)

View File

@ -28,14 +28,14 @@ func PanelDeleteHandler(ctx *gin.Context) {
// Verify the guild exists // Verify the guild exists
guildIdStr := ctx.Param("id") guildIdStr := ctx.Param("id")
guildId, err := strconv.ParseInt(guildIdStr, 10, 64) guildId, err := strconv.ParseUint(guildIdStr, 10, 64)
if err != nil { if err != nil {
ctx.Redirect(302, config.Conf.Server.BaseUrl) // TODO: 404 Page ctx.Redirect(302, config.Conf.Server.BaseUrl) // TODO: 404 Page
return return
} }
messageIdStr := ctx.Param("msg") messageIdStr := ctx.Param("msg")
messageId, err := strconv.ParseInt(messageIdStr, 10, 64); if err != nil { messageId, err := strconv.ParseUint(messageIdStr, 10, 64); if err != nil {
ctx.Redirect(302, fmt.Sprintf("/manage/%d/panels", guildId)) ctx.Redirect(302, fmt.Sprintf("/manage/%d/panels", guildId))
return return
} }

View File

@ -11,7 +11,7 @@ import (
) )
type wrappedPanel struct { type wrappedPanel struct {
MessageId int64 MessageId uint64
ChannelName string ChannelName string
Title string Title string
Content string Content string
@ -35,7 +35,7 @@ func PanelHandler(ctx *gin.Context) {
// Verify the guild exists // Verify the guild exists
guildIdStr := ctx.Param("id") guildIdStr := ctx.Param("id")
guildId, err := strconv.ParseInt(guildIdStr, 10, 64) guildId, err := strconv.ParseUint(guildIdStr, 10, 64)
if err != nil { if err != nil {
ctx.Redirect(302, config.Conf.Server.BaseUrl) // TODO: 404 Page ctx.Redirect(302, config.Conf.Server.BaseUrl) // TODO: 404 Page
return return
@ -101,7 +101,7 @@ func PanelHandler(ctx *gin.Context) {
} }
// Format channels to be text channels only // Format channels to be text channels only
channelMap := make(map[int64]string) channelMap := make(map[uint64]string)
for _, channel := range channels { for _, channel := range channels {
if channel.Type == 0 { if channel.Type == 0 {
channelMap[channel.ChannelId] = channel.Name channelMap[channel.ChannelId] = channel.Name
@ -109,7 +109,7 @@ func PanelHandler(ctx *gin.Context) {
} }
// Get categories & format // Get categories & format
categories := make(map[int64]string) categories := make(map[uint64]string)
for _, channel := range channels { for _, channel := range channels {
if channel.Type == 4 { if channel.Type == 4 {
categories[channel.ChannelId] = channel.Name categories[channel.ChannelId] = channel.Name
@ -118,7 +118,7 @@ func PanelHandler(ctx *gin.Context) {
// Get is premium // Get is premium
isPremiumChan := make(chan bool) isPremiumChan := make(chan bool)
go utils.IsPremiumGuild(store, guildIdStr, isPremiumChan) go utils.IsPremiumGuild(store, guildId, isPremiumChan)
isPremium := <-isPremiumChan isPremium := <-isPremiumChan
ctx.HTML(200, "manage/panels", gin.H{ ctx.HTML(200, "manage/panels", gin.H{

View File

@ -30,7 +30,7 @@ func SendMessage(ctx *gin.Context) {
// Verify the guild exists // Verify the guild exists
guildIdStr := ctx.Param("id") guildIdStr := ctx.Param("id")
guildId, err := strconv.ParseInt(guildIdStr, 10, 64) guildId, err := strconv.ParseUint(guildIdStr, 10, 64)
if err != nil { if err != nil {
ctx.Redirect(302, config.Conf.Server.BaseUrl) // TODO: 404 Page ctx.Redirect(302, config.Conf.Server.BaseUrl) // TODO: 404 Page
return return

View File

@ -29,7 +29,7 @@ func SettingsHandler(ctx *gin.Context) {
// Verify the guild exists // Verify the guild exists
guildIdStr := ctx.Param("id") guildIdStr := ctx.Param("id")
guildId, err := strconv.ParseInt(guildIdStr, 10, 64) guildId, err := strconv.ParseUint(guildIdStr, 10, 64)
if err != nil { if err != nil {
ctx.Redirect(302, config.Conf.Server.BaseUrl) // TODO: 404 Page ctx.Redirect(302, config.Conf.Server.BaseUrl) // TODO: 404 Page
return return

View File

@ -29,7 +29,7 @@ func TicketCloseHandler(ctx *gin.Context) {
// Verify the guild exists // Verify the guild exists
guildIdStr := ctx.Param("id") guildIdStr := ctx.Param("id")
guildId, err := strconv.ParseInt(guildIdStr, 10, 64) guildId, err := strconv.ParseUint(guildIdStr, 10, 64)
if err != nil { if err != nil {
ctx.Redirect(302, config.Conf.Server.BaseUrl) // TODO: 404 Page ctx.Redirect(302, config.Conf.Server.BaseUrl) // TODO: 404 Page
return return

View File

@ -28,7 +28,7 @@ func TicketListHandler(ctx *gin.Context) {
// Verify the guild exists // Verify the guild exists
guildIdStr := ctx.Param("id") guildIdStr := ctx.Param("id")
guildId, err := strconv.ParseInt(guildIdStr, 10, 64) guildId, err := strconv.ParseUint(guildIdStr, 10, 64)
if err != nil { if err != nil {
ctx.Redirect(302, config.Conf.Server.BaseUrl) // TODO: 404 Page ctx.Redirect(302, config.Conf.Server.BaseUrl) // TODO: 404 Page
return return
@ -53,18 +53,18 @@ func TicketListHandler(ctx *gin.Context) {
tickets := table.GetOpenTickets(guildId) tickets := table.GetOpenTickets(guildId)
var toFetch []int64 var toFetch []uint64
for _, ticket := range tickets { for _, ticket := range tickets {
toFetch = append(toFetch, ticket.Owner) toFetch = append(toFetch, ticket.Owner)
for _, idStr := range strings.Split(ticket.Members, ",") { for _, idStr := range strings.Split(ticket.Members, ",") {
if memberId, err := strconv.ParseInt(idStr, 10, 64); err == nil { if memberId, err := strconv.ParseUint(idStr, 10, 64); err == nil {
toFetch = append(toFetch, memberId) toFetch = append(toFetch, memberId)
} }
} }
} }
nodes := make(map[int64]table.UsernameNode) nodes := make(map[uint64]table.UsernameNode)
for _, node := range table.GetUserNodes(toFetch) { for _, node := range table.GetUserNodes(toFetch) {
nodes[node.Id] = node nodes[node.Id] = node
} }
@ -74,7 +74,7 @@ func TicketListHandler(ctx *gin.Context) {
for _, ticket := range tickets { for _, ticket := range tickets {
var membersFormatted []map[string]interface{} var membersFormatted []map[string]interface{}
for index, memberIdStr := range strings.Split(ticket.Members, ",") { for index, memberIdStr := range strings.Split(ticket.Members, ",") {
if memberId, err := strconv.ParseInt(memberIdStr, 10, 64); err == nil { if memberId, err := strconv.ParseUint(memberIdStr, 10, 64); err == nil {
if memberId != 0 { if memberId != 0 {
var separator string var separator string
if index != len(strings.Split(ticket.Members, ",")) - 1 { if index != len(strings.Split(ticket.Members, ",")) - 1 {

View File

@ -33,7 +33,7 @@ func TicketViewHandler(ctx *gin.Context) {
// Verify the guild exists // Verify the guild exists
guildIdStr := ctx.Param("id") guildIdStr := ctx.Param("id")
guildId, err := strconv.ParseInt(guildIdStr, 10, 64) guildId, err := strconv.ParseUint(guildIdStr, 10, 64)
if err != nil { if err != nil {
ctx.Redirect(302, config.Conf.Server.BaseUrl) // TODO: 404 Page ctx.Redirect(302, config.Conf.Server.BaseUrl) // TODO: 404 Page
return return
@ -96,7 +96,7 @@ func TicketViewHandler(ctx *gin.Context) {
match := MentionRegex.FindAllStringSubmatch(content, -1) match := MentionRegex.FindAllStringSubmatch(content, -1)
for _, mention := range match { for _, mention := range match {
if len(mention) >= 2 { if len(mention) >= 2 {
mentionedId, err := strconv.ParseInt(mention[1], 10, 64); if err != nil { mentionedId, err := strconv.ParseUint(mention[1], 10, 64); if err != nil {
continue continue
} }
@ -113,7 +113,7 @@ func TicketViewHandler(ctx *gin.Context) {
} }
premium := make(chan bool) premium := make(chan bool)
go utils.IsPremiumGuild(store, guildIdStr, premium) go utils.IsPremiumGuild(store, guildId, premium)
ctx.HTML(200, "manage/ticketview", gin.H{ ctx.HTML(200, "manage/ticketview", gin.H{
"name": store.Get("name").(string), "name": store.Get("name").(string),

View File

@ -28,7 +28,7 @@ func UpdateSettingsHandler(ctx *gin.Context) {
// Verify the guild exists // Verify the guild exists
guildIdStr := ctx.Param("id") guildIdStr := ctx.Param("id")
guildId, err := strconv.ParseInt(guildIdStr, 10, 64) guildId, err := strconv.ParseUint(guildIdStr, 10, 64)
if err != nil { if err != nil {
ctx.Redirect(302, config.Conf.Server.BaseUrl) // TODO: 404 Page ctx.Redirect(302, config.Conf.Server.BaseUrl) // TODO: 404 Page
return return
@ -108,7 +108,7 @@ func UpdateSettingsHandler(ctx *gin.Context) {
categoryStr := ctx.PostForm("category") categoryStr := ctx.PostForm("category")
if utils.Contains(categoryIds, categoryStr) { if utils.Contains(categoryIds, categoryStr) {
// Error is impossible, as we check it's a valid channel already // Error is impossible, as we check it's a valid channel already
category, _ := strconv.ParseInt(categoryStr, 10, 64) category, _ := strconv.ParseUint(categoryStr, 10, 64)
table.UpdateChannelCategory(guildId, category) table.UpdateChannelCategory(guildId, category)
} }
@ -118,14 +118,14 @@ func UpdateSettingsHandler(ctx *gin.Context) {
go table.GetCachedChannelsByGuild(guildId, channelsChan) go table.GetCachedChannelsByGuild(guildId, channelsChan)
channels := <-channelsChan channels := <-channelsChan
var channelIds []int64 var channelIds []uint64
for _, channel := range channels { for _, channel := range channels {
channelIds = append(channelIds, channel.ChannelId) channelIds = append(channelIds, channel.ChannelId)
} }
// Update or archive channel // Update or archive channel
archiveChannelStr := ctx.PostForm("archivechannel") archiveChannelStr := ctx.PostForm("archivechannel")
archiveChannelId, err := strconv.ParseInt(archiveChannelStr, 10, 64) archiveChannelId, err := strconv.ParseUint(archiveChannelStr, 10, 64)
if err == nil && utils.Contains(channelIds, archiveChannelId) { if err == nil && utils.Contains(channelIds, archiveChannelId) {
table.UpdateArchiveChannel(guildId, archiveChannelId) table.UpdateArchiveChannel(guildId, archiveChannelId)
} }

View File

@ -31,7 +31,7 @@ func LogViewHandler(ctx *gin.Context) {
// Verify the guild exists // Verify the guild exists
guildIdStr := ctx.Param("id") guildIdStr := ctx.Param("id")
guildId, err := strconv.ParseInt(guildIdStr, 10, 64) guildId, err := strconv.ParseUint(guildIdStr, 10, 64)
if err != nil { if err != nil {
ctx.Redirect(302, config.Conf.Server.BaseUrl) // TODO: 404 Page ctx.Redirect(302, config.Conf.Server.BaseUrl) // TODO: 404 Page
return return

View File

@ -93,7 +93,7 @@ func WebChatWs(ctx *gin.Context) {
} }
var guildId string var guildId string
var guildIdParsed int64 var guildIdParsed uint64
var ticket int var ticket int
for { for {
@ -119,7 +119,7 @@ func WebChatWs(ctx *gin.Context) {
socket.Ticket = ticket socket.Ticket = ticket
// Verify the guild exists // Verify the guild exists
guildIdParsed, err = strconv.ParseInt(guildId, 10, 64) guildIdParsed, err = strconv.ParseUint(guildId, 10, 64)
if err != nil { if err != nil {
fmt.Println(err.Error()) fmt.Println(err.Error())
conn.Close() conn.Close()
@ -146,7 +146,7 @@ func WebChatWs(ctx *gin.Context) {
// Verify the guild is premium // Verify the guild is premium
premium := make(chan bool) premium := make(chan bool)
go utils.IsPremiumGuild(store, guildId, premium) go utils.IsPremiumGuild(store, guildIdParsed, premium)
if !<-premium { if !<-premium {
conn.Close() conn.Close()
return return

View File

@ -83,7 +83,7 @@ func CallbackHandler(ctx *gin.Context) {
ctx.Redirect(302, config.Conf.Server.BaseUrl) ctx.Redirect(302, config.Conf.Server.BaseUrl)
userId, err := strconv.ParseInt(currentUser.Id, 10, 64); if err != nil { // ??? userId, err := strconv.ParseUint(currentUser.Id, 10, 64); if err != nil { // ???
return return
} }
@ -100,7 +100,7 @@ func CallbackHandler(ctx *gin.Context) {
go cache.Client.StoreGuild(guild) go cache.Client.StoreGuild(guild)
// cache roles // cache roles
guildId, err := strconv.ParseInt(guild.Id, 10, 64); if err != nil { guildId, err := strconv.ParseUint(guild.Id, 10, 64); if err != nil {
continue continue
} }
go cacheRoles(store, guildId, userId) go cacheRoles(store, guildId, userId)
@ -116,7 +116,7 @@ func CallbackHandler(ctx *gin.Context) {
}() }()
} }
func cacheRoles(store sessions.Session, guildId, userId int64) { func cacheRoles(store sessions.Session, guildId, userId uint64) {
roles := utils.GetRolesRest(store, guildId, userId) roles := utils.GetRolesRest(store, guildId, userId)
if roles == nil { if roles == nil {

View File

@ -28,7 +28,7 @@ func IndexHandler(ctx *gin.Context) {
userGuilds := table.GetGuilds(userIdStr) userGuilds := table.GetGuilds(userIdStr)
adminGuilds := make([]objects.Guild, 0) adminGuilds := make([]objects.Guild, 0)
for _, guild := range userGuilds { for _, guild := range userGuilds {
guildId, err := strconv.ParseInt(guild.Id, 10, 64) guildId, err := strconv.ParseUint(guild.Id, 10, 64)
if err != nil { // I think this happens when a server was deleted? We should just skip though. if err != nil { // I think this happens when a server was deleted? We should just skip though.
continue continue
} }

View File

@ -7,11 +7,11 @@ import (
type TicketCloseMessage struct { type TicketCloseMessage struct {
Uuid string Uuid string
User int64 User uint64
Reason string Reason string
} }
func (c *RedisClient) PublishTicketClose(ticket string, userId int64, reason string) { func (c *RedisClient) PublishTicketClose(ticket string, userId uint64, reason string) {
settings := TicketCloseMessage{ settings := TicketCloseMessage{
Uuid: ticket, Uuid: ticket,
User: userId, User: userId,

View File

@ -5,20 +5,20 @@ import (
) )
type ArchiveChannel struct { type ArchiveChannel struct {
Guild int64 `gorm:"column:GUILDID"` Guild uint64 `gorm:"column:GUILDID"`
Channel int64 `gorm:"column:CHANNELID"` Channel uint64 `gorm:"column:CHANNELID"`
} }
func (ArchiveChannel) TableName() string { func (ArchiveChannel) TableName() string {
return "archivechannel" return "archivechannel"
} }
func UpdateArchiveChannel(guildId int64, channelId int64) { func UpdateArchiveChannel(guildId uint64, channelId uint64) {
var channel ArchiveChannel var channel ArchiveChannel
database.Database.Where(ArchiveChannel{Guild: guildId}).Assign(ArchiveChannel{Channel: channelId}).FirstOrCreate(&channel) database.Database.Where(ArchiveChannel{Guild: guildId}).Assign(ArchiveChannel{Channel: channelId}).FirstOrCreate(&channel)
} }
func GetArchiveChannel(guildId int64) int64 { func GetArchiveChannel(guildId uint64) uint64 {
var channel ArchiveChannel var channel ArchiveChannel
database.Database.Where(&ArchiveChannel{Guild: guildId}).First(&channel) database.Database.Where(&ArchiveChannel{Guild: guildId}).First(&channel)

View File

@ -6,31 +6,31 @@ import (
type BlacklistNode struct { type BlacklistNode struct {
Assoc int `gorm:"column:ASSOCID;type:int;primary_key;auto_increment"` Assoc int `gorm:"column:ASSOCID;type:int;primary_key;auto_increment"`
Guild int64 `gorm:"column:GUILDID"` Guild uint64 `gorm:"column:GUILDID"`
User int64 `gorm:"column:USERID"` User uint64 `gorm:"column:USERID"`
} }
func (BlacklistNode) TableName() string { func (BlacklistNode) TableName() string {
return "blacklist" return "blacklist"
} }
func IsBlacklisted(guildId, userId int64) bool { func IsBlacklisted(guildId, userId uint64) bool {
var count int var count int
database.Database.Table("blacklist").Where(&BlacklistNode{Guild: guildId, User: userId}).Count(&count) database.Database.Table("blacklist").Where(&BlacklistNode{Guild: guildId, User: userId}).Count(&count)
return count > 0 return count > 0
} }
func AddBlacklist(guildId, userId int64) { func AddBlacklist(guildId, userId uint64) {
database.Database.Create(&BlacklistNode{Guild: guildId, User: userId}) database.Database.Create(&BlacklistNode{Guild: guildId, User: userId})
} }
func RemoveBlacklist(guildId, userId int64) { func RemoveBlacklist(guildId, userId uint64) {
var node BlacklistNode var node BlacklistNode
database.Database.Where(BlacklistNode{Guild: guildId, User: userId}).Take(&node) database.Database.Where(BlacklistNode{Guild: guildId, User: userId}).Take(&node)
database.Database.Delete(&node) database.Database.Delete(&node)
} }
func GetBlacklistNodes(guildId int64) []BlacklistNode { func GetBlacklistNodes(guildId uint64) []BlacklistNode {
var nodes []BlacklistNode var nodes []BlacklistNode
database.Database.Where(&BlacklistNode{Guild: guildId}).Find(&nodes) database.Database.Where(&BlacklistNode{Guild: guildId}).Find(&nodes)
return nodes return nodes

View File

@ -5,19 +5,19 @@ import (
) )
type ChannelCategory struct { type ChannelCategory struct {
GuildId int64 `gorm:"column:GUILDID"` GuildId uint64 `gorm:"column:GUILDID"`
Category int64 `gorm:"column:CATEGORYID"` Category uint64 `gorm:"column:CATEGORYID"`
} }
func (ChannelCategory) TableName() string { func (ChannelCategory) TableName() string {
return "channelcategory" return "channelcategory"
} }
func UpdateChannelCategory(guildId int64, categoryId int64) { func UpdateChannelCategory(guildId uint64, categoryId uint64) {
database.Database.Where(&ChannelCategory{GuildId: guildId}).Assign(&ChannelCategory{Category: categoryId}).FirstOrCreate(&ChannelCategory{}) database.Database.Where(&ChannelCategory{GuildId: guildId}).Assign(&ChannelCategory{Category: categoryId}).FirstOrCreate(&ChannelCategory{})
} }
func GetChannelCategory(guildId int64) int64 { func GetChannelCategory(guildId uint64) uint64 {
var category ChannelCategory var category ChannelCategory
database.Database.Where(&ChannelCategory{GuildId: guildId}).First(&category) database.Database.Where(&ChannelCategory{GuildId: guildId}).First(&category)

View File

@ -5,8 +5,8 @@ import (
) )
type Channel struct { type Channel struct {
ChannelId int64 `gorm:"column:CHANNELID"` ChannelId uint64 `gorm:"column:CHANNELID"`
GuildId int64 `gorm:"column:GUILDID"` GuildId uint64 `gorm:"column:GUILDID"`
Name string `gorm:"column:NAME;type:VARCHAR(32)"` Name string `gorm:"column:NAME;type:VARCHAR(32)"`
Type int `gorm:"column:CHANNELTYPE;type:TINYINT(1)"` Type int `gorm:"column:CHANNELTYPE;type:TINYINT(1)"`
} }
@ -15,7 +15,7 @@ func (Channel) TableName() string {
return "Channel" return "Channel"
} }
func StoreChannel(channelId, guildId int64, name string, channelType int) { func StoreChannel(channelId, guildId uint64, name string, channelType int) {
channel := Channel{ channel := Channel{
ChannelId: channelId, ChannelId: channelId,
GuildId: guildId, GuildId: guildId,
@ -23,23 +23,23 @@ func StoreChannel(channelId, guildId int64, name string, channelType int) {
Type: channelType, Type: channelType,
} }
database.Database.Where(&Channel{ChannelId:channelId}).Assign(&channel).FirstOrCreate(&Channel{}) database.Database.Where(&Channel{ChannelId: channelId}).Assign(&channel).FirstOrCreate(&Channel{})
} }
func DeleteChannel(channelId int64) { func DeleteChannel(channelId uint64) {
var node Channel var node Channel
database.Database.Where(Channel{ChannelId: channelId}).Take(&node) database.Database.Where(Channel{ChannelId: channelId}).Take(&node)
database.Database.Delete(&node) database.Database.Delete(&node)
} }
func GetCachedChannelsByGuild(guildId int64, res chan []Channel) { func GetCachedChannelsByGuild(guildId uint64, res chan []Channel) {
var nodes []Channel var nodes []Channel
database.Database.Where(Channel{GuildId: guildId}).Find(&nodes) database.Database.Where(Channel{GuildId: guildId}).Find(&nodes)
res <- nodes res <- nodes
} }
// Util function ig // Util function ig
func GetCategories(guildId int64, res chan []Channel) { func GetCategories(guildId uint64, res chan []Channel) {
channelsChan := make(chan []Channel) channelsChan := make(chan []Channel)
go GetCachedChannelsByGuild(guildId, channelsChan) go GetCachedChannelsByGuild(guildId, channelsChan)
channels := <-channelsChan channels := <-channelsChan

View File

@ -3,7 +3,7 @@ package table
import "github.com/TicketsBot/GoPanel/database" import "github.com/TicketsBot/GoPanel/database"
type TicketNamingScheme struct { type TicketNamingScheme struct {
Guild int64 `gorm:"column:GUILDID;unique;primary_key"` Guild uint64 `gorm:"column:GUILDID;unique;primary_key"`
NamingScheme string `gorm:"column:NAMINGSCHEME;type:VARCHAR(16)"` NamingScheme string `gorm:"column:NAMINGSCHEME;type:VARCHAR(16)"`
} }
@ -20,7 +20,7 @@ func (TicketNamingScheme) TableName() string {
return "TicketNamingScheme" return "TicketNamingScheme"
} }
func GetTicketNamingScheme(guild int64, ch chan NamingScheme) { func GetTicketNamingScheme(guild uint64, ch chan NamingScheme) {
var node TicketNamingScheme var node TicketNamingScheme
database.Database.Where(TicketNamingScheme{Guild: guild}).First(&node) database.Database.Where(TicketNamingScheme{Guild: guild}).First(&node)
namingScheme := node.NamingScheme namingScheme := node.NamingScheme
@ -32,6 +32,6 @@ func GetTicketNamingScheme(guild int64, ch chan NamingScheme) {
} }
} }
func SetTicketNamingScheme(guild int64, scheme NamingScheme) { func SetTicketNamingScheme(guild uint64, scheme NamingScheme) {
database.Database.Where(&TicketNamingScheme{Guild: guild}).Assign(&TicketNamingScheme{NamingScheme: string(scheme)}).FirstOrCreate(&TicketNamingScheme{}) database.Database.Where(&TicketNamingScheme{Guild: guild}).Assign(&TicketNamingScheme{NamingScheme: string(scheme)}).FirstOrCreate(&TicketNamingScheme{})
} }

View File

@ -5,14 +5,13 @@ import (
) )
type Panel struct { type Panel struct {
MessageId int64 `gorm:"column:MESSAGEID"` MessageId uint64 `gorm:"column:MESSAGEID"`
ChannelId int64 `gorm:"column:CHANNELID"` ChannelId uint64 `gorm:"column:CHANNELID"`
GuildId int64 `gorm:"column:GUILDID"` // Might be useful in the future so we store it GuildId uint64 `gorm:"column:GUILDID"` // Might be useful in the future so we store it
Title string `gorm:"column:TITLE;type:VARCHAR(255)"` Title string `gorm:"column:TITLE;type:VARCHAR(255)"`
Content string `gorm:"column:CONTENT;type:TEXT"` Content string `gorm:"column:CONTENT;type:TEXT"`
Colour int `gorm:"column:COLOUR` Colour int `gorm:"column:COLOUR`
TargetCategory int64 `gorm:"column:TARGETCATEGORY"` TargetCategory uint64 `gorm:"column:TARGETCATEGORY"`
ReactionEmote string `gorm:"column:REACTIONEMOTE;type:VARCHAR(32)"` ReactionEmote string `gorm:"column:REACTIONEMOTE;type:VARCHAR(32)"`
} }
@ -20,7 +19,7 @@ func (Panel) TableName() string {
return "panels" return "panels"
} }
func AddPanel(messageId, channelId, guildId int64, title, content string, colour int, targetCategory int64, reactionEmote string) { func AddPanel(messageId, channelId, guildId uint64, title, content string, colour int, targetCategory uint64, reactionEmote string) {
database.Database.Create(&Panel{ database.Database.Create(&Panel{
MessageId: messageId, MessageId: messageId,
ChannelId: channelId, ChannelId: channelId,
@ -34,18 +33,18 @@ func AddPanel(messageId, channelId, guildId int64, title, content string, colour
}) })
} }
func IsPanel(messageId int64, ch chan bool) { func IsPanel(messageId uint64, ch chan bool) {
var count int var count int
database.Database.Table(Panel{}.TableName()).Where(Panel{MessageId: messageId}).Count(&count) database.Database.Table(Panel{}.TableName()).Where(Panel{MessageId: messageId}).Count(&count)
ch <- count > 0 ch <- count > 0
} }
func GetPanelsByGuild(guildId int64, ch chan []Panel) { func GetPanelsByGuild(guildId uint64, ch chan []Panel) {
var panels []Panel var panels []Panel
database.Database.Where(Panel{GuildId: guildId}).Find(&panels) database.Database.Where(Panel{GuildId: guildId}).Find(&panels)
ch <- panels ch <- panels
} }
func DeletePanel(msgId int64) { func DeletePanel(msgId uint64) {
database.Database.Where(Panel{MessageId: msgId}).Delete(Panel{}) database.Database.Where(Panel{MessageId: msgId}).Delete(Panel{})
} }

View File

@ -5,7 +5,7 @@ import (
) )
type PanelSettings struct { type PanelSettings struct {
GuildId int64 `gorm:"column:GUILDID"` GuildId uint64 `gorm:"column:GUILDID"`
Title string `gorm:"column:TITLE;type:VARCHAR(255)"` Title string `gorm:"column:TITLE;type:VARCHAR(255)"`
Content string `gorm:"column:CONTENT;type:TEXT"` Content string `gorm:"column:CONTENT;type:TEXT"`
Colour int `gorm:"column:COLOUR` Colour int `gorm:"column:COLOUR`
@ -15,7 +15,7 @@ func (PanelSettings) TableName() string {
return "panelsettings" return "panelsettings"
} }
func UpdatePanelSettings(guildId int64, title string, content string, colour int) { func UpdatePanelSettings(guildId uint64, title string, content string, colour int) {
settings := PanelSettings{ settings := PanelSettings{
Title: title, Title: title,
Content: content, Content: content,
@ -25,7 +25,7 @@ func UpdatePanelSettings(guildId int64, title string, content string, colour int
database.Database.Where(&PanelSettings{GuildId: guildId}).Assign(&settings).FirstOrCreate(&PanelSettings{}) database.Database.Where(&PanelSettings{GuildId: guildId}).Assign(&settings).FirstOrCreate(&PanelSettings{})
} }
func UpdatePanelTitle(guildId int64, title string) { func UpdatePanelTitle(guildId uint64, title string) {
settings := PanelSettings{ settings := PanelSettings{
Title: title, Title: title,
} }
@ -33,7 +33,7 @@ func UpdatePanelTitle(guildId int64, title string) {
database.Database.Where(&PanelSettings{GuildId: guildId}).Assign(&settings).FirstOrCreate(&PanelSettings{}) database.Database.Where(&PanelSettings{GuildId: guildId}).Assign(&settings).FirstOrCreate(&PanelSettings{})
} }
func UpdatePanelContent(guildId int64, content string) { func UpdatePanelContent(guildId uint64, content string) {
settings := PanelSettings{ settings := PanelSettings{
Content: content, Content: content,
} }
@ -41,7 +41,7 @@ func UpdatePanelContent(guildId int64, content string) {
database.Database.Where(&PanelSettings{GuildId: guildId}).Assign(&settings).FirstOrCreate(&PanelSettings{}) database.Database.Where(&PanelSettings{GuildId: guildId}).Assign(&settings).FirstOrCreate(&PanelSettings{})
} }
func UpdatePanelColour(guildId int64, colour int) { func UpdatePanelColour(guildId uint64, colour int) {
settings := PanelSettings{ settings := PanelSettings{
Colour: colour, Colour: colour,
} }
@ -49,7 +49,7 @@ func UpdatePanelColour(guildId int64, colour int) {
database.Database.Where(&PanelSettings{GuildId: guildId}).Assign(&settings).FirstOrCreate(&PanelSettings{}) database.Database.Where(&PanelSettings{GuildId: guildId}).Assign(&settings).FirstOrCreate(&PanelSettings{})
} }
func GetPanelSettings(guildId int64) PanelSettings { func GetPanelSettings(guildId uint64) PanelSettings {
settings := PanelSettings{ settings := PanelSettings{
Title: "Open A Ticket", Title: "Open A Ticket",
Content: "React with :envelope_with_arrow: to open a ticket", Content: "React with :envelope_with_arrow: to open a ticket",

View File

@ -3,8 +3,8 @@ package table
import "github.com/TicketsBot/GoPanel/database" import "github.com/TicketsBot/GoPanel/database"
type PermissionNode struct { type PermissionNode struct {
GuildId int64 `gorm:"column:GUILDID"` GuildId uint64 `gorm:"column:GUILDID"`
UserId int64 `gorm:"column:USERID"` UserId uint64 `gorm:"column:USERID"`
IsSupport bool `gorm:"column:ISSUPPORT"` IsSupport bool `gorm:"column:ISSUPPORT"`
IsAdmin bool `gorm:"column:ISADMIN"` IsAdmin bool `gorm:"column:ISADMIN"`
} }
@ -13,11 +13,11 @@ func (PermissionNode) TableName() string {
return "permissions" return "permissions"
} }
func GetAdminGuilds(userId int64) []int64 { func GetAdminGuilds(userId uint64) []uint64 {
var nodes []PermissionNode var nodes []PermissionNode
database.Database.Where(&PermissionNode{UserId: userId}).Find(&nodes) database.Database.Where(&PermissionNode{UserId: userId}).Find(&nodes)
ids := make([]int64, 0) ids := make([]uint64, 0)
for _, node := range nodes { for _, node := range nodes {
ids = append(ids, node.GuildId) ids = append(ids, node.GuildId)
} }
@ -25,19 +25,19 @@ func GetAdminGuilds(userId int64) []int64 {
return ids return ids
} }
func IsSupport(guildId int64, userId int64) bool { func IsSupport(guildId uint64, userId uint64) bool {
var node PermissionNode var node PermissionNode
database.Database.Where(&PermissionNode{GuildId: guildId, UserId: userId}).Take(&node) database.Database.Where(&PermissionNode{GuildId: guildId, UserId: userId}).Take(&node)
return node.IsSupport return node.IsSupport
} }
func IsAdmin(guildId int64, userId int64) bool { func IsAdmin(guildId uint64, userId uint64) bool {
var node PermissionNode var node PermissionNode
database.Database.Where(&PermissionNode{GuildId: guildId, UserId: userId}).Take(&node) database.Database.Where(&PermissionNode{GuildId: guildId, UserId: userId}).Take(&node)
return node.IsAdmin return node.IsAdmin
} }
func IsStaff(guildId int64, userId int64) bool { func IsStaff(guildId uint64, userId uint64) bool {
var node PermissionNode var node PermissionNode
database.Database.Where(&PermissionNode{GuildId: guildId, UserId: userId}).Take(&node) database.Database.Where(&PermissionNode{GuildId: guildId, UserId: userId}).Take(&node)
return node.IsAdmin || node.IsSupport return node.IsAdmin || node.IsSupport

View File

@ -5,7 +5,7 @@ import (
) )
type PingEveryone struct { type PingEveryone struct {
GuildId int64 `gorm:"column:GUILDID"` GuildId uint64 `gorm:"column:GUILDID"`
PingEveryone bool `gorm:"column:PINGEVERYONE;type:TINYINT"` PingEveryone bool `gorm:"column:PINGEVERYONE;type:TINYINT"`
} }
@ -14,7 +14,7 @@ func (PingEveryone) TableName() string {
} }
// tldr I hate gorm // tldr I hate gorm
func UpdatePingEveryone(guildId int64, pingEveryone bool) { func UpdatePingEveryone(guildId uint64, pingEveryone bool) {
var settings []PingEveryone var settings []PingEveryone
database.Database.Where(&PingEveryone{GuildId: guildId}).Find(&settings) database.Database.Where(&PingEveryone{GuildId: guildId}).Find(&settings)
@ -29,7 +29,7 @@ func UpdatePingEveryone(guildId int64, pingEveryone bool) {
//database.Database.Where(&PingEveryone{GuildId: guildId}).Assign(&updated).FirstOrCreate(&PingEveryone{}) //database.Database.Where(&PingEveryone{GuildId: guildId}).Assign(&updated).FirstOrCreate(&PingEveryone{})
} }
func GetPingEveryone(guildId int64) bool { func GetPingEveryone(guildId uint64) bool {
pingEveryone := PingEveryone{PingEveryone: true} pingEveryone := PingEveryone{PingEveryone: true}
database.Database.Where(&PingEveryone{GuildId: guildId}).First(&pingEveryone) database.Database.Where(&PingEveryone{GuildId: guildId}).First(&pingEveryone)

View File

@ -5,7 +5,7 @@ import (
) )
type Prefix struct { type Prefix struct {
GuildId int64 `gorm:"column:GUILDID"` GuildId uint64 `gorm:"column:GUILDID"`
Prefix string `gorm:"column:PREFIX;type:varchar(8)"` Prefix string `gorm:"column:PREFIX;type:varchar(8)"`
} }
@ -13,11 +13,11 @@ func (Prefix) TableName() string {
return "prefix" return "prefix"
} }
func UpdatePrefix(guildId int64, prefix string) { func UpdatePrefix(guildId uint64, prefix string) {
database.Database.Where(&Prefix{GuildId: guildId}).Assign(&Prefix{Prefix: prefix}).FirstOrCreate(&Prefix{}) database.Database.Where(&Prefix{GuildId: guildId}).Assign(&Prefix{Prefix: prefix}).FirstOrCreate(&Prefix{})
} }
func GetPrefix(guildId int64) string { func GetPrefix(guildId uint64) string {
prefix := Prefix{Prefix: "t!"} prefix := Prefix{Prefix: "t!"}
database.Database.Where(&Prefix{GuildId: guildId}).First(&prefix) database.Database.Where(&Prefix{GuildId: guildId}).First(&prefix)

View File

@ -7,10 +7,10 @@ import (
) )
type PremiumGuilds struct { type PremiumGuilds struct {
Guild int64 `gorm:"column:GUILDID;unique;primary_key"` Guild uint64 `gorm:"column:GUILDID;unique;primary_key"`
Expiry int64 `gorm:"column:EXPIRY"` Expiry int64 `gorm:"column:EXPIRY"`
User int64 `gorm:"column:USERID"` User uint64 `gorm:"column:USERID"`
ActivatedBy int64 `gorm:"column:ACTIVATEDBY"` ActivatedBy uint64 `gorm:"column:ACTIVATEDBY"`
Keys string `gorm:"column:KEYSUSED"` Keys string `gorm:"column:KEYSUSED"`
} }
@ -18,7 +18,7 @@ func (PremiumGuilds) TableName() string {
return "premiumguilds" return "premiumguilds"
} }
func IsPremium(guild int64, ch chan bool) { func IsPremium(guild uint64, ch chan bool) {
var node PremiumGuilds var node PremiumGuilds
database.Database.Where(PremiumGuilds{Guild: guild}).First(&node) database.Database.Where(PremiumGuilds{Guild: guild}).First(&node)
@ -31,17 +31,17 @@ func IsPremium(guild int64, ch chan bool) {
ch <- node.Expiry > current ch <- node.Expiry > current
} }
func AddPremium(key string, guild, userId, length, activatedBy int64) { func AddPremium(key string, guild, userId uint64, length int64, activatedBy uint64) {
var expiry int64 var expiry int64
hasPrem := make(chan bool) hasPrem := make(chan bool)
go IsPremium(guild, hasPrem) go IsPremium(guild, hasPrem)
isPremium := <- hasPrem isPremium := <-hasPrem
if isPremium { if isPremium {
expiryChan := make(chan int64) expiryChan := make(chan int64)
go GetExpiry(guild, expiryChan) go GetExpiry(guild, expiryChan)
currentExpiry := <- expiryChan currentExpiry := <-expiryChan
expiry = currentExpiry + length expiry = currentExpiry + length
} else { } else {
@ -51,21 +51,21 @@ func AddPremium(key string, guild, userId, length, activatedBy int64) {
keysChan := make(chan []string) keysChan := make(chan []string)
go GetKeysUsed(guild, keysChan) go GetKeysUsed(guild, keysChan)
keys := <- keysChan keys := <-keysChan
keys = append(keys, key) keys = append(keys, key)
keysStr := strings.Join(keys,",") keysStr := strings.Join(keys, ",")
var node PremiumGuilds var node PremiumGuilds
database.Database.Where(PremiumGuilds{Guild: guild}).Assign(PremiumGuilds{Expiry: expiry, User: userId, ActivatedBy: activatedBy, Keys: keysStr}).FirstOrCreate(&node) 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) { func GetExpiry(guild uint64, ch chan int64) {
var node PremiumGuilds var node PremiumGuilds
database.Database.Where(PremiumGuilds{Guild: guild}).First(&node) database.Database.Where(PremiumGuilds{Guild: guild}).First(&node)
ch <- node.Expiry ch <- node.Expiry
} }
func GetKeysUsed(guild int64, ch chan []string) { func GetKeysUsed(guild uint64, ch chan []string) {
var node PremiumGuilds var node PremiumGuilds
database.Database.Where(PremiumGuilds{Guild: guild}).First(&node) database.Database.Where(PremiumGuilds{Guild: guild}).First(&node)
ch <- strings.Split(node.Keys, ",") ch <- strings.Split(node.Keys, ",")

View File

@ -2,12 +2,11 @@ package table
import ( import (
"github.com/TicketsBot/GoPanel/database" "github.com/TicketsBot/GoPanel/database"
"strconv"
) )
type RolePermissions struct { type RolePermissions struct {
GuildId int64 `gorm:"column:GUILDID"` GuildId uint64 `gorm:"column:GUILDID"`
RoleId int64 `gorm:"column:ROLEID"` RoleId uint64 `gorm:"column:ROLEID"`
Support bool `gorm:"column:ISSUPPORT"` Support bool `gorm:"column:ISSUPPORT"`
Admin bool `gorm:"column:ISADMIN"` Admin bool `gorm:"column:ISADMIN"`
} }
@ -16,48 +15,23 @@ func (RolePermissions) TableName() string {
return "role_permissions" return "role_permissions"
} }
func IsSupportRole(guild string, role string, ch chan bool) { func IsSupportRole(guildId, roleId uint64, ch chan bool) {
guildId, err := strconv.ParseInt(guild, 10, 64); if err != nil {
ch <- false
return
}
rollId, err := strconv.ParseInt(role, 10, 64); if err != nil {
ch <- false
return
}
var node RolePermissions var node RolePermissions
database.Database.Where(RolePermissions{GuildId: guildId, RoleId: rollId}).First(&node) database.Database.Where(RolePermissions{GuildId: guildId, RoleId: roleId}).First(&node)
ch <- node.Support ch <- node.Support
} }
func IsAdminRole(guild string, role string, ch chan bool) { func IsAdminRole(guildId, roleId uint64, ch chan bool) {
guildId, err := strconv.ParseInt(guild, 10, 64); if err != nil {
ch <- false
return
}
rollId, err := strconv.ParseInt(role, 10, 64); if err != nil {
ch <- false
return
}
var node RolePermissions var node RolePermissions
database.Database.Where(RolePermissions{GuildId: guildId, RoleId: rollId}).First(&node) database.Database.Where(RolePermissions{GuildId: guildId, RoleId: roleId}).First(&node)
ch <- node.Admin ch <- node.Admin
} }
func GetAdminRoles(guild string, ch chan []int64) { func GetAdminRoles(guildId uint64, ch chan []uint64) {
guildId, err := strconv.ParseInt(guild, 10, 64); if err != nil {
ch <- []int64{}
return
}
var nodes []RolePermissions var nodes []RolePermissions
database.Database.Where(RolePermissions{GuildId: guildId, Admin: true}).Find(&nodes) database.Database.Where(RolePermissions{GuildId: guildId, Admin: true}).Find(&nodes)
ids := make([]int64, 0) ids := make([]uint64, 0)
for _, node := range nodes { for _, node := range nodes {
ids = append(ids, node.RoleId) ids = append(ids, node.RoleId)
} }
@ -65,16 +39,11 @@ func GetAdminRoles(guild string, ch chan []int64) {
ch <- ids ch <- ids
} }
func GetSupportRoles(guild string, ch chan []int64) { func GetSupportRoles(guildId uint64, ch chan []uint64) {
guildId, err := strconv.ParseInt(guild, 10, 64); if err != nil {
ch <- []int64{}
return
}
var nodes []RolePermissions var nodes []RolePermissions
database.Database.Where(RolePermissions{GuildId: guildId, Support: true, Admin: false}).Find(&nodes) database.Database.Where(RolePermissions{GuildId: guildId, Support: true, Admin: false}).Find(&nodes)
ids := make([]int64, 0) ids := make([]uint64, 0)
for _, node := range nodes { for _, node := range nodes {
ids = append(ids, node.RoleId) ids = append(ids, node.RoleId)
} }
@ -82,55 +51,23 @@ func GetSupportRoles(guild string, ch chan []int64) {
ch <- ids ch <- ids
} }
func AddAdminRole(guild string, role string) { func AddAdminRole(guildId, roleId uint64) {
guildId, err := strconv.ParseInt(guild, 10, 64); if err != nil {
return
}
roleId, err := strconv.ParseInt(role, 10, 64); if err != nil {
return
}
var node RolePermissions var node RolePermissions
database.Database.Where(RolePermissions{GuildId: guildId, RoleId: roleId}).Assign(RolePermissions{Admin: true, Support: true}).FirstOrCreate(&node) database.Database.Where(RolePermissions{GuildId: guildId, RoleId: roleId}).Assign(RolePermissions{Admin: true, Support: true}).FirstOrCreate(&node)
} }
func AddSupportRole(guild string, role string) { func AddSupportRole(guildId, roleId uint64) {
guildId, err := strconv.ParseInt(guild, 10, 64); if err != nil {
return
}
roleId, err := strconv.ParseInt(role, 10, 64); if err != nil {
return
}
var node RolePermissions var node RolePermissions
database.Database.Where(RolePermissions{GuildId: guildId, RoleId: roleId}).Assign(RolePermissions{Support: true}).FirstOrCreate(&node) database.Database.Where(RolePermissions{GuildId: guildId, RoleId: roleId}).Assign(RolePermissions{Support: true}).FirstOrCreate(&node)
} }
func RemoveAdminRole(guild string, role string) { func RemoveAdminRole(guildId, roleId uint64) {
guildId, err := strconv.ParseInt(guild, 10, 64); if err != nil {
return
}
roleId, err := strconv.ParseInt(role, 10, 64); if err != nil {
return
}
var node RolePermissions var node RolePermissions
database.Database.Where(RolePermissions{GuildId: guildId, RoleId: roleId}).Take(&node) database.Database.Where(RolePermissions{GuildId: guildId, RoleId: roleId}).Take(&node)
database.Database.Model(&node).Where("GUILDID = ? AND ROLEID = ?", guildId, roleId).Update("ISADMIN", false) database.Database.Model(&node).Where("GUILDID = ? AND ROLEID = ?", guildId, roleId).Update("ISADMIN", false)
} }
func RemoveSupportRole(guild string, role string) { func RemoveSupportRole(guildId, roleId uint64) {
guildId, err := strconv.ParseInt(guild, 10, 64); if err != nil {
return
}
roleId, err := strconv.ParseInt(role, 10, 64); if err != nil {
return
}
var node RolePermissions var node RolePermissions
database.Database.Where(RolePermissions{GuildId: guildId, RoleId: roleId}).Take(&node) database.Database.Where(RolePermissions{GuildId: guildId, RoleId: roleId}).Take(&node)
database.Database.Model(&node).Where("GUILDID = ? AND ROLEID = ?", guildId, roleId).Updates(map[string]interface{}{ database.Database.Model(&node).Where("GUILDID = ? AND ROLEID = ?", guildId, roleId).Updates(map[string]interface{}{

View File

@ -6,16 +6,16 @@ import (
type CachedRole struct { type CachedRole struct {
AssociationId int `gorm:"column:ASSOCIATIONID;primary_key;auto_increment"` AssociationId int `gorm:"column:ASSOCIATIONID;primary_key;auto_increment"`
GuildId int64 `gorm:"column:GUILDID"` GuildId uint64 `gorm:"column:GUILDID"`
UserId int64 `gorm:"column:USERID"` UserId uint64 `gorm:"column:USERID"`
RoleId int64 `gorm:"column:ROLEID"` RoleId uint64 `gorm:"column:ROLEID"`
} }
func (CachedRole) TableName() string { func (CachedRole) TableName() string {
return "cache_roles" return "cache_roles"
} }
func DeleteRoles(guildId, userId int64) { func DeleteRoles(guildId, userId uint64) {
database.Database.Where(CachedRole{ database.Database.Where(CachedRole{
GuildId: guildId, GuildId: guildId,
UserId: userId, UserId: userId,
@ -23,7 +23,7 @@ func DeleteRoles(guildId, userId int64) {
} }
// TODO: Cache invalidation // TODO: Cache invalidation
func CacheRole(guildId, userId, roleId int64) { func CacheRole(guildId, userId, roleId uint64) {
database.Database.Create(&CachedRole{ database.Database.Create(&CachedRole{
GuildId: guildId, GuildId: guildId,
UserId: userId, UserId: userId,
@ -31,14 +31,14 @@ func CacheRole(guildId, userId, roleId int64) {
}) })
} }
func GetCachedRoles(guildId, userId int64, res chan []int64) { func GetCachedRoles(guildId, userId uint64, res chan []uint64) {
var rows []CachedRole var rows []CachedRole
database.Database.Where(&CachedRole{ database.Database.Where(&CachedRole{
GuildId: guildId, GuildId: guildId,
UserId: userId, UserId: userId,
}).Find(&rows) }).Find(&rows)
roles := make([]int64, 0) roles := make([]uint64, 0)
for _, row := range rows { for _, row := range rows {
roles = append(roles, row.RoleId) roles = append(roles, row.RoleId)
} }

View File

@ -6,8 +6,8 @@ import (
type TicketArchive struct { type TicketArchive struct {
Uuid string `gorm:"column:UUID;type:varchar(36)"` Uuid string `gorm:"column:UUID;type:varchar(36)"`
Guild int64 `gorm:"column:GUILDID"` Guild uint64 `gorm:"column:GUILDID"`
User int64 `gorm:"column:USERID"` User uint64 `gorm:"column:USERID"`
Username string `gorm:"column:USERNAME;type:varchar(32)"` Username string `gorm:"column:USERNAME;type:varchar(32)"`
TicketId int `gorm:"column:TICKETID"` TicketId int `gorm:"column:TICKETID"`
CdnUrl string `gorm:"column:CDNURL;type:varchar(100)"` CdnUrl string `gorm:"column:CDNURL;type:varchar(100)"`
@ -17,14 +17,14 @@ func (TicketArchive) TableName() string {
return "ticketarchive" return "ticketarchive"
} }
func GetTicketArchives(guildId int64) []TicketArchive { func GetTicketArchives(guildId uint64) []TicketArchive {
var archives []TicketArchive var archives []TicketArchive
database.Database.Where(&TicketArchive{Guild: guildId}).Order("TICKETID desc").Find(&archives) database.Database.Where(&TicketArchive{Guild: guildId}).Order("TICKETID desc").Find(&archives)
return archives return archives
} }
func GetFilteredTicketArchives(guildId int64, userId int64, username string, ticketId int) []TicketArchive { func GetFilteredTicketArchives(guildId uint64, userId uint64, username string, ticketId int) []TicketArchive {
var archives []TicketArchive var archives []TicketArchive
query := database.Database.Where(&TicketArchive{Guild: guildId}) query := database.Database.Where(&TicketArchive{Guild: guildId})
@ -43,7 +43,7 @@ func GetFilteredTicketArchives(guildId int64, userId int64, username string, tic
return archives return archives
} }
func GetCdnUrl(guildId int64, uuid string) string { func GetCdnUrl(guildId uint64, uuid string) string {
var archive TicketArchive var archive TicketArchive
database.Database.Where(&TicketArchive{Guild: guildId, Uuid: uuid}).First(&archive) database.Database.Where(&TicketArchive{Guild: guildId, Uuid: uuid}).First(&archive)
return archive.CdnUrl return archive.CdnUrl

View File

@ -5,7 +5,7 @@ import (
) )
type TicketLimit struct { type TicketLimit struct {
GuildId int64 `gorm:"column:GUILDID"` GuildId uint64 `gorm:"column:GUILDID"`
Limit int `gorm:"column:TICKETLIMIT"` Limit int `gorm:"column:TICKETLIMIT"`
} }
@ -13,11 +13,11 @@ func (TicketLimit) TableName() string {
return "ticketlimit" return "ticketlimit"
} }
func UpdateTicketLimit(guildId int64, limit int) { func UpdateTicketLimit(guildId uint64, limit int) {
database.Database.Where(&TicketLimit{GuildId: guildId}).Assign(&TicketLimit{Limit: limit}).FirstOrCreate(&TicketLimit{}) database.Database.Where(&TicketLimit{GuildId: guildId}).Assign(&TicketLimit{Limit: limit}).FirstOrCreate(&TicketLimit{})
} }
func GetTicketLimit(guildId int64) int { func GetTicketLimit(guildId uint64) int {
limit := TicketLimit{Limit: 5} limit := TicketLimit{Limit: 5}
database.Database.Where(&TicketLimit{GuildId: guildId}).First(&limit) database.Database.Where(&TicketLimit{GuildId: guildId}).First(&limit)

View File

@ -5,9 +5,9 @@ import "github.com/TicketsBot/GoPanel/database"
type Ticket struct { type Ticket struct {
Uuid string `gorm:"column:UUID;type:varchar(36);primary_key"` Uuid string `gorm:"column:UUID;type:varchar(36);primary_key"`
TicketId int `gorm:"column:ID"` TicketId int `gorm:"column:ID"`
Guild int64 `gorm:"column:GUILDID"` Guild uint64 `gorm:"column:GUILDID"`
Channel int64 `gorm:"column:CHANNELID"` Channel uint64 `gorm:"column:CHANNELID"`
Owner int64 `gorm:"column:OWNERID"` Owner uint64 `gorm:"column:OWNERID"`
Members string `gorm:"column:MEMBERS;type:text"` Members string `gorm:"column:MEMBERS;type:text"`
IsOpen bool `gorm:"column:OPEN"` IsOpen bool `gorm:"column:OPEN"`
OpenTime int64 `gorm:"column:OPENTIME"` OpenTime int64 `gorm:"column:OPENTIME"`
@ -17,13 +17,13 @@ func (Ticket) TableName() string {
return "tickets" return "tickets"
} }
func GetTickets(guild int64) []Ticket { func GetTickets(guild uint64) []Ticket {
var tickets []Ticket var tickets []Ticket
database.Database.Where(&Ticket{Guild: guild}).Order("ID asc").Find(&tickets) database.Database.Where(&Ticket{Guild: guild}).Order("ID asc").Find(&tickets)
return tickets return tickets
} }
func GetOpenTickets(guild int64) []Ticket { func GetOpenTickets(guild uint64) []Ticket {
var tickets []Ticket var tickets []Ticket
database.Database.Where(&Ticket{Guild: guild, IsOpen: true}).Order("ID asc").Find(&tickets) database.Database.Where(&Ticket{Guild: guild, IsOpen: true}).Order("ID asc").Find(&tickets)
return tickets return tickets
@ -35,7 +35,7 @@ func GetTicket(uuid string, ch chan Ticket) {
ch <- ticket ch <- ticket
} }
func GetTicketById(guild int64, id int, ch chan Ticket) { func GetTicketById(guild uint64, id int, ch chan Ticket) {
var ticket Ticket var ticket Ticket
database.Database.Where(&Ticket{Guild: guild, TicketId: id}).First(&ticket) database.Database.Where(&Ticket{Guild: guild, TicketId: id}).First(&ticket)
ch <- ticket ch <- ticket

View File

@ -5,7 +5,7 @@ import (
) )
type UsernameNode struct { type UsernameNode struct {
Id int64 `gorm:"column:USERID;primary_key"` Id uint64 `gorm:"column:USERID;primary_key"`
Name string `gorm:"column:USERNAME;type:text"` // Base 64 encoded Name string `gorm:"column:USERNAME;type:text"` // Base 64 encoded
Discriminator string `gorm:"column:DISCRIM;type:varchar(4)"` Discriminator string `gorm:"column:DISCRIM;type:varchar(4)"`
Avatar string `gorm:"column:AVATARHASH;type:varchar(100)"` Avatar string `gorm:"column:AVATARHASH;type:varchar(100)"`
@ -15,19 +15,19 @@ func (UsernameNode) TableName() string {
return "usernames" return "usernames"
} }
func GetUsername(id int64, ch chan string) { func GetUsername(id uint64, ch chan string) {
node := UsernameNode{Name: "Unknown"} node := UsernameNode{Name: "Unknown"}
database.Database.Where(&UsernameNode{Id: id}).First(&node) database.Database.Where(&UsernameNode{Id: id}).First(&node)
ch <- node.Name ch <- node.Name
} }
func GetUserNodes(ids []int64) []UsernameNode { func GetUserNodes(ids []uint64) []UsernameNode {
var nodes []UsernameNode var nodes []UsernameNode
database.Database.Where(ids).Find(&nodes) database.Database.Where(ids).Find(&nodes)
return nodes return nodes
} }
func GetUserId(name, discrim string) int64 { func GetUserId(name, discrim string) uint64 {
var node UsernameNode var node UsernameNode
database.Database.Where(&UsernameNode{Name: name, Discriminator: discrim}).First(&node) database.Database.Where(&UsernameNode{Name: name, Discriminator: discrim}).First(&node)
return node.Id return node.Id

View File

@ -3,7 +3,7 @@ package table
import "github.com/TicketsBot/GoPanel/database" import "github.com/TicketsBot/GoPanel/database"
type UserCanClose struct { type UserCanClose struct {
Guild int64 `gorm:"column:GUILDID;unique;primary_key"` Guild uint64 `gorm:"column:GUILDID;unique;primary_key"`
CanClose *bool `gorm:"column:CANCLOSE"` CanClose *bool `gorm:"column:CANCLOSE"`
} }
@ -11,7 +11,7 @@ func (UserCanClose) TableName() string {
return "usercanclose" return "usercanclose"
} }
func IsUserCanClose(guild int64, ch chan bool) { func IsUserCanClose(guild uint64, ch chan bool) {
var node UserCanClose var node UserCanClose
database.Database.Where(UserCanClose{Guild: guild}).First(&node) database.Database.Where(UserCanClose{Guild: guild}).First(&node)
@ -22,6 +22,6 @@ func IsUserCanClose(guild int64, ch chan bool) {
} }
} }
func SetUserCanClose(guild int64, value bool) { func SetUserCanClose(guild uint64, value bool) {
database.Database.Where(&UserCanClose{Guild: guild}).Assign(&UserCanClose{CanClose: &value}).FirstOrCreate(&UserCanClose{}) database.Database.Where(&UserCanClose{Guild: guild}).Assign(&UserCanClose{CanClose: &value}).FirstOrCreate(&UserCanClose{})
} }

View File

@ -6,7 +6,7 @@ import (
) )
type Votes struct { type Votes struct {
Id int64 `gorm:"type:bigint;unique_index;primary_key"` Id uint64 `gorm:"type:bigint;unique_index;primary_key"`
VoteTime time.Time VoteTime time.Time
} }
@ -14,9 +14,9 @@ func (Votes) TableName() string {
return "votes" return "votes"
} }
func HasVoted(owner int64, ch chan bool) { func HasVoted(owner uint64, ch chan bool) {
var node Votes var node Votes
database.Database.Where(Votes{Id: owner}).First(&node) database.Database.Where(Votes{Id: owner}).First(&node)
ch <- time.Now().Sub(node.VoteTime) < 24 * time.Hour ch <- time.Now().Sub(node.VoteTime) < 24*time.Hour
} }

View File

@ -5,7 +5,7 @@ import (
) )
type WelcomeMessage struct { type WelcomeMessage struct {
GuildId int64 `gorm:"column:GUILDID"` GuildId uint64 `gorm:"column:GUILDID"`
Message string `gorm:"column:MESSAGE;type:text"` Message string `gorm:"column:MESSAGE;type:text"`
} }
@ -13,11 +13,11 @@ func (WelcomeMessage) TableName() string {
return "welcomemessages" return "welcomemessages"
} }
func UpdateWelcomeMessage(guildId int64, message string) { func UpdateWelcomeMessage(guildId uint64, message string) {
database.Database.Where(&WelcomeMessage{GuildId: guildId}).Assign(&WelcomeMessage{Message: message}).FirstOrCreate(&WelcomeMessage{}) database.Database.Where(&WelcomeMessage{GuildId: guildId}).Assign(&WelcomeMessage{Message: message}).FirstOrCreate(&WelcomeMessage{})
} }
func GetWelcomeMessage(guildId int64) string { func GetWelcomeMessage(guildId uint64) string {
message := WelcomeMessage{Message: "No message specified"} message := WelcomeMessage{Message: "No message specified"}
database.Database.Where(&WelcomeMessage{GuildId: guildId}).First(&message) database.Database.Where(&WelcomeMessage{GuildId: guildId}).First(&message)

View File

@ -3,13 +3,12 @@ package guild
import ( import (
"fmt" "fmt"
"github.com/TicketsBot/GoPanel/utils/discord" "github.com/TicketsBot/GoPanel/utils/discord"
"strconv"
) )
func GetGuildMember(guildId, userId int) discord.Endpoint { func GetGuildMember(guildId, userId uint64) discord.Endpoint {
return discord.Endpoint{ return discord.Endpoint{
RequestType: discord.GET, RequestType: discord.GET,
AuthorizationType: discord.BOT, AuthorizationType: discord.BOT,
Endpoint: fmt.Sprintf("/guilds/%s/members/%s", strconv.Itoa(guildId), strconv.Itoa(userId)), Endpoint: fmt.Sprintf("/guilds/%d/members/%d", guildId, userId),
} }
} }

View File

@ -5,7 +5,7 @@ import "github.com/TicketsBot/GoPanel/utils/types"
type Member struct { type Member struct {
User User User User
Nick string Nick string
Roles types.Int64StringSlice `json:"roles,string"` Roles types.UInt64StringSlice `json:"roles,string"`
JoinedAt string JoinedAt string
Deaf bool Deaf bool
Mute bool Mute bool

View File

@ -14,7 +14,7 @@ import (
var roleCache = cache.New(time.Minute, time.Minute) var roleCache = cache.New(time.Minute, time.Minute)
func IsAdmin(guild objects.Guild, guildId, userId int64, res chan bool) { func IsAdmin(guild objects.Guild, guildId, userId uint64, res chan bool) {
if Contains(config.Conf.Admins, strconv.Itoa(int(userId))) { if Contains(config.Conf.Admins, strconv.Itoa(int(userId))) {
res <- true res <- true
} }
@ -31,12 +31,12 @@ func IsAdmin(guild objects.Guild, guildId, userId int64, res chan bool) {
res <- true res <- true
} }
userRolesChan := make(chan []int64) userRolesChan := make(chan []uint64)
go table.GetCachedRoles(guildId, userId, userRolesChan) go table.GetCachedRoles(guildId, userId, userRolesChan)
userRoles := <-userRolesChan userRoles := <-userRolesChan
adminRolesChan := make(chan []int64) adminRolesChan := make(chan []uint64)
go table.GetAdminRoles(strconv.Itoa(int(guildId)), adminRolesChan) go table.GetAdminRoles(guildId, adminRolesChan)
adminRoles := <- adminRolesChan adminRoles := <- adminRolesChan
hasAdminRole := false hasAdminRole := false
@ -56,15 +56,15 @@ func IsAdmin(guild objects.Guild, guildId, userId int64, res chan bool) {
res <- false res <- false
} }
func GetRolesRest(store sessions.Session, guildId, userId int64) *[]int64 { func GetRolesRest(store sessions.Session, guildId, userId uint64) *[]uint64 {
var member objects.Member var member objects.Member
endpoint := guild.GetGuildMember(int(guildId), int(userId)) endpoint := guild.GetGuildMember(guildId, userId)
if err, _ := endpoint.Request(store, nil, nil, &member); err != nil { if err, _ := endpoint.Request(store, nil, nil, &member); err != nil {
log.Error(err.Error()) log.Error(err.Error())
return nil return nil
} }
roles := []int64(member.Roles) roles := []uint64(member.Roles)
return &roles return &roles
} }

View File

@ -23,17 +23,14 @@ type ProxyResponse struct {
var premiumCache = cache.New(10 * time.Minute, 10 * time.Minute) var premiumCache = cache.New(10 * time.Minute, 10 * time.Minute)
func IsPremiumGuild(store sessions.Session, guildIdRaw string, ch chan bool) { func IsPremiumGuild(store sessions.Session, guildId uint64, ch chan bool) {
guildIdRaw := strconv.FormatUint(guildId, 10)
if premium, ok := premiumCache.Get(guildIdRaw); ok { if premium, ok := premiumCache.Get(guildIdRaw); ok {
ch<-premium.(bool) ch<-premium.(bool)
return return
} }
guildId, err := strconv.ParseInt(guildIdRaw, 10, 64); if err != nil {
ch<-false
return
}
// First lookup by premium key, then votes, then patreon // First lookup by premium key, then votes, then patreon
keyLookup := make(chan bool) keyLookup := make(chan bool)
go table.IsPremium(guildId, keyLookup) go table.IsPremium(guildId, keyLookup)

View File

@ -15,6 +15,6 @@ func IsLoggedIn(store sessions.Session) bool {
store.Get("csrf") != nil store.Get("csrf") != nil
} }
func GetUserId(store sessions.Session) (int64, error) { func GetUserId(store sessions.Session) (uint64, error) {
return strconv.ParseInt(store.Get("userid").(string), 10, 64) return strconv.ParseUint(store.Get("userid").(string), 10, 64)
} }

View File

@ -0,0 +1,44 @@
package types
import (
"encoding/json"
"fmt"
"strconv"
"strings"
)
type UInt64StringSlice []uint64
func (slice UInt64StringSlice) MarshalJSON() ([]byte, error) {
values := make([]string, len(slice))
for i, value := range []uint64(slice) {
values[i] = fmt.Sprintf(`"%v"`, value)
}
return []byte(fmt.Sprintf("[%v]", strings.Join(values, ","))), nil
}
func (slice *UInt64StringSlice) UnmarshalJSON(b []byte) error {
// Try array of strings first.
var values []string
err := json.Unmarshal(b, &values)
if err != nil {
// Fall back to array of integers:
var values []uint64
if err := json.Unmarshal(b, &values); err != nil {
return err
}
*slice = values
return nil
}
*slice = make([]uint64, len(values))
for i, value := range values {
value, err := strconv.ParseUint(value, 10, 64)
if err != nil {
return err
}
(*slice)[i] = value
}
return nil
}