aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnhgelus Morhtuuzh <anhgelus@anhgelus.world>2025-05-13 13:15:59 +0200
committerAnhgelus Morhtuuzh <anhgelus@anhgelus.world>2025-05-13 13:15:59 +0200
commit6b6c775ab3af659e26f0c79dbabd86d88d2451d5 (patch)
tree719ce16b64f8f37e844f69cf9c1b9ef9bb6a0cb6
parentd38c57b83009bf0a8b22bede7ee786d6f54fc66a (diff)
refactor(gorm): remove ...At fields from model
-rw-r--r--PRIVACY.md4
-rw-r--r--config/guild.go5
-rw-r--r--events.go6
-rw-r--r--user/member.go80
-rw-r--r--user/xp.go33
5 files changed, 29 insertions, 99 deletions
diff --git a/PRIVACY.md b/PRIVACY.md
index 87f3f69..eb60bac 100644
--- a/PRIVACY.md
+++ b/PRIVACY.md
@@ -32,9 +32,9 @@ En tant qu'utilisateur, vous avez le droit de :
- avoir accès à vos données sauvegardées
- modifier ces données
-Pour exercer vos droits concernant l'accès aux données ou à la modification des données, contacter me@anhgelus.world.
+Pour exercer vos droits concernant l'accès aux données ou à la modification des données, contactez me@anhgelus.world.
-Concernant la suppression des données, entraîne de facto une remise à zéro de votre profile sur un serveur, contacter le propriétaire du serveur.
+La suppression des données entraîne de facto une remise à zéro de votre profile sur un serveur, contactez le propriétaire du serveur pour exercer ce droit.
Concernant la suppression intégrale des données, contacter me@anhgelus.world.
diff --git a/config/guild.go b/config/guild.go
index 0971837..5e41465 100644
--- a/config/guild.go
+++ b/config/guild.go
@@ -3,12 +3,11 @@ package config
import (
"github.com/anhgelus/gokord"
"github.com/anhgelus/gokord/utils"
- "gorm.io/gorm"
"strings"
)
type GuildConfig struct {
- gorm.Model
+ ID uint `gorm:"primarykey"`
GuildID string `gorm:"not null;unique"`
XpRoles []XpRole
DisabledChannels string
@@ -16,7 +15,7 @@ type GuildConfig struct {
}
type XpRole struct {
- gorm.Model
+ ID uint `gorm:"primarykey"`
XP uint
RoleID string
GuildConfigID uint
diff --git a/events.go b/events.go
index a00fe6c..4e23b69 100644
--- a/events.go
+++ b/events.go
@@ -4,7 +4,6 @@ import (
"context"
"errors"
"fmt"
- "github.com/anhgelus/gokord"
"github.com/anhgelus/gokord/utils"
"github.com/anhgelus/les-copaings-bot/config"
"github.com/anhgelus/les-copaings-bot/exp"
@@ -162,8 +161,11 @@ func onDisconnect(s *discordgo.Session, e *discordgo.VoiceStateUpdate, client *r
func OnLeave(_ *discordgo.Session, e *discordgo.GuildMemberRemove) {
utils.SendDebug("Leave event", "user_id", e.User.ID)
+ if e.User.Bot {
+ return
+ }
c := user.GetCopaing(e.User.ID, e.GuildID)
- if err := gokord.DB.Where("guild_id = ?", e.GuildID).Delete(c).Error; err != nil {
+ if err := c.Delete(); err != nil {
utils.SendAlert(
"events.go - deleting user from db", err.Error(),
"user_id", e.User.ID,
diff --git a/user/member.go b/user/member.go
index 91327ad..dc93979 100644
--- a/user/member.go
+++ b/user/member.go
@@ -4,32 +4,21 @@ import (
"fmt"
"github.com/anhgelus/gokord"
"github.com/anhgelus/gokord/utils"
- "gorm.io/gorm"
)
type Copaing struct {
- gorm.Model
- DiscordID string `gorm:"not null"`
- //XP []CopaingXP
- XP uint `gorm:"default:0"`
- GuildID string `gorm:"not null"`
+ ID uint `gorm:"primarykey"`
+ DiscordID string `gorm:"not null"`
+ XP []CopaingXP `gorm:"constraint:OnDelete:SET NULL;"`
+ GuildID string `gorm:"not null"`
}
-type leftCopaing struct {
- ID uint
- StopDelete chan<- interface{}
+type CopaingXP struct {
+ ID uint `gorm:"primarykey"`
+ XP uint `gorm:"default:0"`
+ CopaingID uint `gorm:"not null;constraint:OnDelete:CASCADE;"`
}
-//type CopaingXP struct {
-// gorm.Model
-// XP uint `gorm:"default:0"`
-// CopaingID uint
-//}
-
-var (
- leftCopaingsMap = map[string]*leftCopaing{}
-)
-
const (
LastEvent = "last_event"
AlreadyRemoved = "already_removed"
@@ -52,50 +41,11 @@ func GetCopaing(discordID string, guildID string) *Copaing {
}
func (c *Copaing) Load() error {
- // check if user left in the past 48 hours
- k := c.GuildID + ":" + c.DiscordID
- l, ok := leftCopaingsMap[k]
- if !ok || l == nil {
- // if not, common first or create
- return gokord.DB.Where("discord_id = ? and guild_id = ?", c.DiscordID, c.GuildID).FirstOrCreate(c).Error
- }
- // else, getting last data
- tmp := Copaing{
- Model: gorm.Model{
- ID: c.ID,
- },
- DiscordID: c.DiscordID,
- GuildID: c.GuildID,
- }
- if err := gokord.DB.Unscoped().Find(&tmp).Error; err != nil {
- // if error, avoid getting old data and use new one
- utils.SendAlert(
- "user/member.go - Getting user in soft delete", err.Error(),
- "discord_id", c.DiscordID,
- "guild_id", c.DiscordID,
- "last_id", l.ID,
- )
- return gokord.DB.Where("discord_id = ? and guild_id = ?", c.DiscordID, c.GuildID).FirstOrCreate(c).Error
- }
- // resetting internal data
- tmp.Model = gorm.Model{}
- l.StopDelete <- true
- leftCopaingsMap[k] = nil
- // creating new data
- err := gokord.DB.Create(&tmp).Error
- if err != nil {
- return err
- }
- // delete old data
- if err = gokord.DB.Unscoped().Delete(&tmp).Error; err != nil {
- utils.SendAlert(
- "user/member.go - Deleting user in soft delete", err.Error(),
- "discord_id", c.DiscordID,
- "guild_id", c.DiscordID,
- "last_id", l.ID,
- )
- }
- return nil
+ return gokord.DB.
+ Where("discord_id = ? and guild_id = ?", c.DiscordID, c.GuildID).
+ Preload("XP").
+ FirstOrCreate(c).
+ Error
}
func (c *Copaing) Save() error {
@@ -105,3 +55,7 @@ func (c *Copaing) Save() error {
func (c *Copaing) GenKey(key string) string {
return fmt.Sprintf("%s:%s:%s", c.GuildID, c.DiscordID, key)
}
+
+func (c *Copaing) Delete() error {
+ return gokord.DB.Where("guild_id = ? AND discord_id = ?", c.GuildID, c.DiscordID).Delete(c).Error
+}
diff --git a/user/xp.go b/user/xp.go
index 4b93f26..90be09d 100644
--- a/user/xp.go
+++ b/user/xp.go
@@ -10,7 +10,6 @@ import (
"github.com/anhgelus/les-copaings-bot/exp"
"github.com/bwmarrin/discordgo"
"github.com/redis/go-redis/v9"
- "gorm.io/gorm"
"math"
"strconv"
"time"
@@ -105,20 +104,20 @@ func (c *Copaing) AddXPAlreadyRemoved(xp uint) uint {
utils.SendAlert("user/xp.go - Getting redis client (set)", err.Error())
return 0
}
- exp := xp + c.XPAlreadyRemoved()
- err = client.Set(context.Background(), c.GenKey(AlreadyRemoved), exp, 0).Err()
+ nxp := xp + c.XPAlreadyRemoved()
+ err = client.Set(context.Background(), c.GenKey(AlreadyRemoved), nxp, 0).Err()
if err != nil {
utils.SendAlert(
"user/xp.go - Setting already removed",
err.Error(),
"exp already removed",
- exp,
+ nxp,
"base_key",
c.GenKey(""),
)
return 0
}
- return exp
+ return nxp
}
func (c *Copaing) XPAlreadyRemoved() uint {
@@ -159,27 +158,3 @@ func (c *Copaing) XPAlreadyRemoved() uint {
}
return uint(xp)
}
-
-func (c *Copaing) Reset() {
- gokord.DB.Where("guild_id = ? AND discord_id = ?", c.GuildID, c.DiscordID).Delete(c)
-}
-
-func (c *Copaing) AfterDelete(db *gorm.DB) error {
- id := c.ID
- dID := c.DiscordID
- gID := c.GuildID
- k := c.GuildID + ":" + c.DiscordID
- ch := utils.NewTimer(48*time.Hour, func(stop chan<- interface{}) {
- if err := db.Unscoped().Where("id = ?", id).Delete(c).Error; err != nil {
- utils.SendAlert(
- "user/xp.go - Removing user from database", err.Error(),
- "discord_id", dID,
- "guild_id", gID,
- )
- }
- stop <- true
- leftCopaingsMap[k] = nil
- })
- leftCopaingsMap[k] = &leftCopaing{id, ch}
- return nil
-}