Initial commit

Signed-off-by: jolheiser <john.olheiser@gmail.com>
main
jolheiser 2022-01-04 23:45:23 -06:00
commit 59c69250d9
Signed by: jolheiser
GPG Key ID: B853ADA5DA7BBF7A
17 changed files with 207 additions and 0 deletions

1
.gitignore vendored 100644
View File

@ -0,0 +1 @@
.idea/

19
LICENSE 100644
View File

@ -0,0 +1,19 @@
Copyright (c) 2021 John Olheiser
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@ -0,0 +1,55 @@
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)
}

View File

@ -0,0 +1,23 @@
package database
import (
_ "github.com/go-sql-driver/mysql"
"github.com/jmoiron/sqlx"
)
type Database struct {
db *sqlx.DB
}
func New(dns string) (*Database, error) {
db, err := sqlx.Open("mysql", dns)
if err != nil {
return nil, err
}
if err := db.Ping(); err != nil {
return nil, err
}
return &Database{db: db}, nil
}

60
database/player.go 100644
View File

@ -0,0 +1,60 @@
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_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
}

View File

@ -0,0 +1,3 @@
SELECT *
FROM minecraft_manager_application
WHERE id = ?;

View File

@ -0,0 +1,3 @@
SELECT *
FROM minecraft_manager_application
WHERE id = (SELECT application_id FROM minecraft_manager_player WHERE LOWER(username) = ?);

View File

@ -0,0 +1,3 @@
UPDATE minecraft_manager_application
SET accepted = ?
WHERE id = ?;

View File

@ -0,0 +1,3 @@
SELECT *
FROM minecraft_manager_application
WHERE LOWER(username) LIKE ?;

View File

@ -0,0 +1,3 @@
UPDATE minecraft_manager_player
SET application_id = ?
WHERE id = ?;

View File

@ -0,0 +1,3 @@
UPDATE minecraft_manager_player
SET discord_id = ?
WHERE id = ?;

View File

@ -0,0 +1,3 @@
SELECT *
FROM minecraft_manager_player
WHERE discord_id IS NULL;

View File

@ -0,0 +1,3 @@
SELECT *
FROM minecraft_manager_player
WHERE username LIKE ?;

View File

@ -0,0 +1,4 @@
SELECT *
FROM minecraft_manager_player
WHERE username LIKE ?
AND application_id IS NOT NULL;

8
go.mod 100644
View File

@ -0,0 +1,8 @@
module git.jojodev.com/minecraft/mcm-discord
go 1.17
require (
github.com/go-sql-driver/mysql v1.6.0
github.com/jmoiron/sqlx v1.3.4
)

9
go.sum 100644
View File

@ -0,0 +1,9 @@
github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
github.com/go-sql-driver/mysql v1.6.0 h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE=
github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
github.com/jmoiron/sqlx v1.3.4 h1:wv+0IJZfL5z0uZoUjlpKgHkgaFSYD+r9CfrXjEXsO7w=
github.com/jmoiron/sqlx v1.3.4/go.mod h1:2BljVx/86SuTyjE+aPYlHCTNvZrnJXghYGpNiXLBMCQ=
github.com/lib/pq v1.2.0 h1:LXpIM/LZ5xGFhOpXAQUIMM1HdyqzVYM13zNdjCEEcA0=
github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
github.com/mattn/go-sqlite3 v1.14.6 h1:dNPt6NO46WmLVt2DLNpwczCmdV5boIZ6g/tlDrlRUbg=
github.com/mattn/go-sqlite3 v1.14.6/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU=

4
main.go 100644
View File

@ -0,0 +1,4 @@
package main
func main() {
}