mcm-discord/database/application.go

56 lines
1.7 KiB
Go

package database
import (
"database/sql"
_ "embed"
"strings"
)
type Application struct {
ID int64 `db:"id"`
Username string `db:"username"`
Age int64 `db:"age"`
PlayerType string `db:"player_type"`
EverBanned bool `db:"ever_banned"`
EverBannedExplanation string `db:"ever_banned_explanation"`
Reference string `db:"reference"`
ReadRules string `db:"read_rules"`
Accepted sql.NullBool `db:"accepted"`
Date string `db:"date"`
}
func (a *Application) String() string {
return a.Username
}
//go:embed queries/application_by_id.sql
var applicationByIDSQL string
func (d *Database) ApplicationByID(id int64) (*Application, error) {
var app Application
return &app, d.db.Get(&app, applicationByIDSQL, id)
}
//go:embed queries/application_by_player_username.sql
var applicationByPlayerUsernameSQL string
func (d *Database) ApplicationByPlayerUsername(username string) (*Application, error) {
var app Application
return &app, d.db.Get(&app, applicationByPlayerUsernameSQL, strings.ToLower(username))
}
//go:embed queries/applications_by_username.sql
var applicationsByUsernameSQL string
func (d *Database) ApplicationsByUsername(username string) (apps []*Application, err error) {
return apps, d.db.Select(&apps, applicationsByUsernameSQL, strings.ToLower(username))
}
//go:embed queries/application_update_accepted.sql
var applicationUpdateAcceptedSQL string
func (d *Database) ApplicationUpdateAccepted(accepted *bool) (*Application, error) {
var app Application
return &app, d.db.Get(&app, applicationUpdateAcceptedSQL, accepted)
}