Add DB interface
parent
e887277415
commit
6f6908573e
|
@ -16,7 +16,7 @@ Go 1.16 or higher is required
|
|||
`go get -u github.com/HimbeerserverDE/multiserver`
|
||||
|
||||
## How to use
|
||||
**Note: The authentication databases of the minetest servers need to be deleted before multiserver can connect to them. You can convert minetest auth databases to the multiserver auth database scheme with [multiserver_converter](https://github.com/HimbeerserverDE/multiserver_converter).**
|
||||
**Note: The authentication databases of the minetest servers need to be deleted before multiserver can connect to them. You can convert minetest auth databases to the multiserver auth database schema with [multiserver_converter](https://github.com/HimbeerserverDE/multiserver_converter).**
|
||||
|
||||
### Running
|
||||
The `go get` command will create an executable file in `~/go/bin/multiserver`.
|
||||
|
|
|
@ -0,0 +1,54 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
"fmt"
|
||||
"os"
|
||||
|
||||
_ "github.com/lib/pq"
|
||||
_ "github.com/mattn/go-sqlite3"
|
||||
)
|
||||
|
||||
type DB struct {
|
||||
*sql.DB
|
||||
}
|
||||
|
||||
// OpenSQLite3 opens and returns a SQLite3 database
|
||||
func OpenSQLite3(name, initSQL string) (*DB, error) {
|
||||
os.Mkdir("storage", 0777)
|
||||
|
||||
db, err := sql.Open("sqlite3", "storage/"+name)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if _, err := db.Exec(initSQL); err != nil {
|
||||
db.Close()
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &DB{DB: db}, nil
|
||||
}
|
||||
|
||||
// OpenPSQL opens and returns a PostgreSQL database
|
||||
func OpenPSQL(host, name, user, password string, port uint16) (*DB, error) {
|
||||
psqlconn := fmt.Sprintf("host=%s port=%d user=%s password=%s dbname=%s sslmode=disable", host, port, user, password, name)
|
||||
|
||||
db, err := sql.Open("postgres", psqlconn)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
err = db.Ping()
|
||||
if err != nil {
|
||||
db.Close()
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &DB{DB: db}, nil
|
||||
}
|
||||
|
||||
// Query executes a SQL statement and stores the results
|
||||
func (db *DB) QueryRow(sql string, values []interface{}, results ...interface{}) error {
|
||||
return db.DB.QueryRow(sql, values...).Scan(results...)
|
||||
}
|
1
go.mod
1
go.mod
|
@ -5,6 +5,7 @@ go 1.16
|
|||
require (
|
||||
github.com/HimbeerserverDE/srp v0.0.0-20210331172529-2b5dbec6b82b
|
||||
github.com/anon55555/mt v0.0.0-20210401173148-4c2536cce54b
|
||||
github.com/lib/pq v1.10.1
|
||||
github.com/mattn/go-sqlite3 v1.14.6
|
||||
github.com/tncardoso/gocurses v0.0.0-20170428215319-6c1f6d2854e2
|
||||
gopkg.in/yaml.v2 v2.4.0
|
||||
|
|
2
go.sum
2
go.sum
|
@ -2,6 +2,8 @@ github.com/HimbeerserverDE/srp v0.0.0-20210331172529-2b5dbec6b82b h1:xqNC1S76U5U
|
|||
github.com/HimbeerserverDE/srp v0.0.0-20210331172529-2b5dbec6b82b/go.mod h1:pxNH8S2nh4n2DWE0ToX5GnnDr/uEAuaAhJsCpkDLIWw=
|
||||
github.com/anon55555/mt v0.0.0-20210401173148-4c2536cce54b h1:gyTxjlQCBIC7rVN2n6fAvz4sRXpOFMSIaw57r9ccJnA=
|
||||
github.com/anon55555/mt v0.0.0-20210401173148-4c2536cce54b/go.mod h1:jH4ER+ahjl7H6TczzK+q4V9sXY++U2Geh6/vt3r4Xvs=
|
||||
github.com/lib/pq v1.10.1 h1:6VXZrLU0jHBYyAqrSPa+MgPfnSvTPuMgK+k0o5kVFWo=
|
||||
github.com/lib/pq v1.10.1/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
|
||||
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=
|
||||
github.com/tncardoso/gocurses v0.0.0-20170428215319-6c1f6d2854e2 h1:wAHqYwDeXe0nIJnz9dqSmBGiaoqBDCRBhV/ebefJe30=
|
||||
|
|
Loading…
Reference in New Issue