zedshaw.games/data/crud.go
2025-06-25 00:00:37 -04:00

55 lines
1 KiB
Go

package data
import (
"log"
"github.com/gofiber/fiber/v2"
_ "github.com/mattn/go-sqlite3"
"github.com/jmoiron/sqlx"
"zedshaw.games/webapp/util"
)
var DB *sqlx.DB
func Setup(driver string, url string) {
var err error
DB, err = sqlx.Connect(driver, url)
if err != nil {
log.Fatalln(err)
}
}
func Shutdown() {
DB.Close()
}
func SelectJson[T any](c *fiber.Ctx, err error, sql string, args ...interface{}) error {
var result []T
if err != nil { goto fail }
err = DB.Select(&result, sql, args...)
if err != nil { goto fail }
return c.JSON(&result)
fail: return err
}
func GetJson[T any](c *fiber.Ctx, err error, sql string, args ...interface{}) error {
var result T
if err != nil { goto fail }
err = DB.Get(&result, sql, args...)
if err != nil { goto fail }
return c.JSON(&result)
fail: return err
}
func Insert(err error, sql_query string, args ...interface{}) (error) {
defer util.HandlePanic("Insert")()
if err != nil { return err }
DB.MustExec(sql_query, args...)
return err
}