added adding and editing of availabilities
This commit is contained in:
@@ -1,11 +1,13 @@
|
||||
package db
|
||||
|
||||
import (
|
||||
"time"
|
||||
"database/sql"
|
||||
"fmt"
|
||||
"os"
|
||||
|
||||
"github.com/go-sql-driver/mysql"
|
||||
"github.com/jmoiron/sqlx"
|
||||
_config "github.com/johannesbuehl/golunteer/backend/pkg/config"
|
||||
_ "modernc.org/sqlite" // SQLite driver
|
||||
)
|
||||
|
||||
var config = _config.Config
|
||||
@@ -14,20 +16,31 @@ var config = _config.Config
|
||||
var DB *sqlx.DB
|
||||
|
||||
func init() {
|
||||
// setup the database-connection
|
||||
sqlConfig := mysql.Config{
|
||||
AllowNativePasswords: true,
|
||||
Net: "tcp",
|
||||
User: config.Database.User,
|
||||
Passwd: config.Database.Password,
|
||||
Addr: config.Database.Host,
|
||||
DBName: config.Database.Database,
|
||||
}
|
||||
|
||||
// connect to the database
|
||||
DB = sqlx.MustOpen("mysql", sqlConfig.FormatDSN())
|
||||
DB.SetMaxIdleConns(10)
|
||||
DB.SetMaxIdleConns(100)
|
||||
DB.SetConnMaxLifetime(time.Minute)
|
||||
DB = sqlx.MustOpen("sqlite", config.Database)
|
||||
|
||||
// create the tables if they don't exist
|
||||
if dbSetupInstructions, err := os.ReadFile("setup.sql"); err != nil {
|
||||
panic("can't read database-setup")
|
||||
} else {
|
||||
DB.MustExec(string(dbSetupInstructions))
|
||||
|
||||
// take wether the admin-user is present as an indicator to a new instance
|
||||
var admin struct {
|
||||
Admin bool `db:"admin"`
|
||||
}
|
||||
if err := DB.QueryRowx("SELECT admin FROM USERS WHERE name = 'admin'").StructScan(&admin); err != nil {
|
||||
// if the error isn't because there was no result, it's a real one
|
||||
if err != sql.ErrNoRows {
|
||||
panic(fmt.Errorf("can't query for the admin-user: %v", err))
|
||||
} else {
|
||||
// setup everything
|
||||
setup()
|
||||
fmt.Println("setup completed")
|
||||
|
||||
// reload the config
|
||||
_config.LoadConfig()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user