12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- package database
- import (
- "database/sql"
- "errors"
- log "maunium.net/go/maulogger/v2"
- )
- type Guild struct {
- db *Database
- log log.Logger
- DiscordID string
- GuildID string
- GuildName string
- Bridge bool
- }
- func (g *Guild) Scan(row Scannable) *Guild {
- err := row.Scan(&g.DiscordID, &g.GuildID, &g.GuildName, &g.Bridge)
- if err != nil {
- if !errors.Is(err, sql.ErrNoRows) {
- g.log.Errorln("Database scan failed:", err)
- }
- return nil
- }
- return g
- }
- func (g *Guild) Upsert() {
- query := "INSERT INTO guild" +
- " (discord_id, guild_id, guild_name, bridge)" +
- " VALUES ($1, $2, $3, $4)" +
- " ON CONFLICT(discord_id, guild_id)" +
- " DO UPDATE SET guild_name=excluded.guild_name, bridge=excluded.bridge"
- _, err := g.db.Exec(query, g.DiscordID, g.GuildID, g.GuildName, g.Bridge)
- if err != nil {
- g.log.Warnfln("Failed to upsert guild %s for %s: %v", g.GuildID, g.DiscordID, err)
- }
- }
- func (g *Guild) Delete() {
- query := "DELETE FROM guild WHERE discord_id=$1 AND guild_id=$2"
- _, err := g.db.Exec(query, g.DiscordID, g.GuildID)
- if err != nil {
- g.log.Warnfln("Failed to delete guild %s for user %s: %v", g.GuildID, g.DiscordID, err)
- }
- }
|