From beb0ea0ca44c96083a2ba2f683accc68ad30f1b1 Mon Sep 17 00:00:00 2001 From: Anhgelus Morhtuuzh Date: Mon, 15 Apr 2024 14:42:08 +0200 Subject: feat(config): base of guild config --- config/guild.go | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 config/guild.go (limited to 'config/guild.go') diff --git a/config/guild.go b/config/guild.go new file mode 100644 index 0000000..ddeb300 --- /dev/null +++ b/config/guild.go @@ -0,0 +1,42 @@ +package config + +import ( + "github.com/anhgelus/gokord" + "gorm.io/gorm" +) + +type GuildConfig struct { + gorm.Model + GuildID string `gorm:"not null"` + XpRoles []XpRole +} + +type XpRole struct { + gorm.Model + XP uint + RoleID string + GuildConfigID uint +} + +func GetGuildConfig(guildID string) *GuildConfig { + cfg := GuildConfig{GuildID: guildID} + return cfg.Load() +} + +func (cfg *GuildConfig) Load() *GuildConfig { + gokord.DB.Where("guild_id = ?", cfg.GuildID).Preload("XpRoles").FirstOrCreate(cfg) + return cfg +} + +func (cfg *GuildConfig) Save() { + gokord.DB.Save(cfg) +} + +func (cfg *GuildConfig) FindXpRole(xp uint, roleID string) (int, *XpRole) { + for i, r := range cfg.XpRoles { + if r.XP == xp && r.RoleID == roleID { + return i, &r + } + } + return 0, nil +} -- cgit v1.2.3