package defaultrolerepo import ( "context" "database/sql" ) type Repo struct { db *sql.DB } func NewRepo(db *sql.DB) *Repo { return &Repo{db: db} } // GetRole returns the configured default role ID for a guild, or 0 if none. func (r *Repo) GetRole(ctx context.Context, guildID int64) (int64, error) { const q = ` SELECT role_id FROM defaultrole WHERE guild_id = $1 ` var roleID sql.NullInt64 if err := r.db.QueryRowContext(ctx, q, guildID).Scan(&roleID); err != nil { if err == sql.ErrNoRows { return 0, nil } return 0, err } if !roleID.Valid { return 0, nil } return roleID.Int64, nil } // SetRole upserts the default role for a guild. func (r *Repo) SetRole(ctx context.Context, guildID, roleID int64) error { const q = ` INSERT INTO defaultrole (guild_id, role_id) VALUES ($1, $2) ON CONFLICT (guild_id) DO UPDATE SET role_id = EXCLUDED.role_id ` _, err := r.db.ExecContext(ctx, q, guildID, roleID) return err }