mcm-discord/database/player.go

68 lines
2.1 KiB
Go

package database
import (
"database/sql"
_ "embed"
"strings"
)
type Player struct {
ID int64 `db:"id"`
AuthUserID sql.NullInt64 `db:"auth_user_id"`
UUID string `db:"uuid"`
Username string `db:"username"`
ApplicationID sql.NullInt64 `db:"application_id"`
Application *Application `db:"-"`
FirstSeen string `db:"first_seen"`
LastSeen string `db:"last_seen"`
DiscordID sql.NullString `db:"discord_id"`
}
func (p *Player) String() string {
return p.Username
}
//go:embed queries/players_by_username.sql
var playersByUsernameSQL string
func (d *Database) PlayersByUsername(username string) (pl []*Player, err error) {
return pl, d.db.Select(&pl, playersByUsernameSQL, strings.ToLower(username))
}
//go:embed queries/players_by_username_application_notnull.sql
var playersByUsernameApplicationNotNullSQL string
func (d *Database) PlayersByUsernameApplicationNotNull(username string) (pl []*Player, err error) {
return pl, d.db.Get(&pl, playersByUsernameApplicationNotNullSQL, strings.ToLower(username))
}
//go:embed queries/players_by_username_application_notnull_count.sql
var playersByUsernameApplicationNotNullCountSQL string
func (d *Database) PlayersByUsernameApplicationNotNullCount(username string) (count int64, err error) {
return count, d.db.Get(&count, playersByUsernameApplicationNotNullCountSQL, strings.ToLower(username))
}
//go:embed queries/players_by_discord_isnull.sql
var playersByDiscordIsNullSQL string
func (d *Database) PlayersByDiscordIsNull() (pl []*Player, err error) {
return pl, d.db.Select(pl, playersByDiscordIsNullSQL)
}
//go:embed queries/player_update_application.sql
var playerUpdateApplicationSQL string
func (d *Database) PlayerUpdateApplication(appID, playerID int64) error {
_, err := d.db.Exec(playerUpdateApplicationSQL, appID, playerID)
return err
}
//go:embed queries/player_update_discord_id.sql
var playerUpdateDiscordIDSQL string
func (d *Database) PlayerUpdateDiscordID(discordID string, playerID int64) error {
_, err := d.db.Exec(playerUpdateDiscordIDSQL, discordID, playerID)
return err
}