get a users level from their twitch id instead of twitch username

This commit is contained in:
lyx0 2023-03-05 20:07:41 +00:00
parent a23e7aafe9
commit 6b255a2bb5
4 changed files with 37 additions and 11 deletions

View file

@ -44,7 +44,7 @@ func (app *Application) handleCommand(message twitch.PrivateMessage) {
// 250 = vip
// 100 = normal
// If the level returned is 0 then the user was not found in the database.
userLevel := app.GetUserLevel(message.User.Name)
userLevel := app.GetUserLevel(message.User.ID)
app.Logger.Infow("Command received",
// "message", message, // Pretty taxing

View file

@ -16,7 +16,7 @@ func (app *Application) InitUser(login, twitchId string, message twitch.PrivateM
sugar := zap.NewExample().Sugar()
defer sugar.Sync()
_, err := app.Models.Users.Check(login)
_, err := app.Models.Users.Check(twitchId)
app.Logger.Error(err)
if err != nil {
app.Logger.Infow("InitUser: Adding new user:",
@ -144,12 +144,12 @@ func (app *Application) SetUserLastFM(lastfmUser string, message twitch.PrivateM
// GetUserLevel takes in a login name and queries the database for an entry
// with such a name value. If there is one it returns the level value as an integer.
// Returns 0 on an error which is the level for unregistered users.
func (app *Application) GetUserLevel(login string) int {
user, err := app.Models.Users.Get(login)
func (app *Application) GetUserLevel(twitchId string) int {
userLevel, err := app.Models.Users.GetLevel(twitchId)
if err != nil {
return 0
} else {
return user.Level
return userLevel
}
}

View file

@ -27,8 +27,9 @@ type Models struct {
Users interface {
Insert(login, twitchId string) error
Get(login string) (*User, error)
Check(login string) (*User, error)
Check(twitchId string) (*User, error)
SetLevel(login string, level int) error
GetLevel(twitchId string) (int, error)
SetLocation(login, location string) error
GetLocation(login string) (string, error)
SetLastFM(login, lastfmUser string) error

View file

@ -157,6 +157,32 @@ func (u UserModel) GetLastFM(login string) (string, error) {
return user.LastFMUsername, nil
}
// SetLocation searches the database for a record with the provided login value
// and if that exists sets the location to the supplied
func (u UserModel) GetLevel(twitchId string) (int, error) {
query := `
SELECT level
FROM users
WHERE twitchid = $1`
var user User
err := u.DB.QueryRow(query, twitchId).Scan(
&user.Level,
)
if err != nil {
switch {
case errors.Is(err, sql.ErrNoRows):
return -1, ErrRecordNotFound
default:
return -1, err
}
}
return user.Level, nil
}
// Setlevel searches the database for a record with the provided login value
// and if that exists sets the level to the supplied level value.
func (u UserModel) SetLevel(login string, level int) error {
@ -216,18 +242,17 @@ func (u UserModel) Get(login string) (*User, error) {
}
// Check checks the database for a record with the given login name.
func (u UserModel) Check(login string) (*User, error) {
func (u UserModel) Check(twitchId string) (*User, error) {
query := `
SELECT id, added_at, login
SELECT id, login
FROM users
WHERE login = $1`
WHERE twitchid = $1`
var user User
err := u.DB.QueryRow(query, login).Scan(
err := u.DB.QueryRow(query, twitchId).Scan(
&user.ID,
&user.Login,
&user.TwitchID,
)
if err != nil {