added adding and editing of availabilities

This commit is contained in:
z1glr
2025-01-18 13:25:12 +00:00
parent e37310b774
commit e17c9db90c
24 changed files with 737 additions and 163 deletions

View File

@@ -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()
}
}
}
}